[go] CSV 파일의 인코딩 변환 방법

CSV 파일의 인코딩 변환 방법

대부분의 경우 CSV 파일은 UTF-8로 인코딩되어 있습니다. 그러나 때로는 다른 인코딩 형식으로 작성된 CSV 파일을 다루어야 할 때가 있습니다. Go 언어에서 이를 처리하기 위해 몇 가지 방법이 있습니다.

1. 파일을 읽고 변환하는 방법

가장 일반적인 방법은 파일을 읽고 적절한 인코딩으로 변환하는 것입니다.

package main

import (
	"os"
	"io/ioutil"
	"golang.org/x/text/encoding/unicode"
	"golang.org/x/text/transform"
	"encoding/csv"
	"fmt"
)

func main() {
	file, err := os.Open("input.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	reader := transform.NewReader(file, unicode.BOMOverride(encoding.Windows1252.NewDecoder()))
	contents, err := ioutil.ReadAll(reader)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	r := csv.NewReader(contents)
	// CSV 파일 처리
}

이 예제에서는 golang.org/x/text/encoding 패키지를 사용하여 CSV 파일을 Windows-1252로 인코딩 된 파일로 변환하였습니다.

2. 인코딩된 CSV 파일을 직접 읽는 방법

때로는 파일을 읽지 않고 바로 인코딩된 CSV 파일을 읽을 수 있는 방법이 필요할 수 있습니다.

package main

import (
	"os"
	"golang.org/x/text/encoding/unicode"
	"golang.org/x/text/transform"
	"encoding/csv"
	"fmt"
)

func main() {
	file, err := os.Open("input.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	reader := csv.NewReader(transform.NewReader(file, unicode.BOMOverride(encoding.EUC-KR.NewDecoder())))
	// CSV 파일 처리
}

위의 예제에서는 golang.org/x/text/encoding 패키지를 사용하여 직접 인코딩된 CSV 파일을 읽고 있습니다.

golang.org/x/text/encoding 패키지는 Go 언어에서 문자 인코딩을 다루는데 유용한 패키지 입니다.

결론

CSV 파일을 다룰 때 인코딩을 변환해야 하는 경우가 발생할 수 있습니다. Go 언어에서는 golang.org/x/text/encoding 패키지를 사용하여 파일을 읽고 필요한 인코딩으로 변환하거나, 직접 인코딩된 CSV 파일을 읽을 수 있습니다.