[go] CSV 파일의 UTF-16 인코딩 처리
CSV 파일을 다루다보면 UTF-16 인코딩이 필요한 경우가 있습니다. UTF-16은 유니코드를 지원하며, 여러 언어와 문자를 포함할 수 있는 인코딩 방식입니다. 이 포스트에서는 Go 언어로 CSV 파일의 UTF-16 인코딩을 처리하는 방법에 대해 알아보겠습니다.
1. UTF-16으로 CSV 파일 쓰기
Go 언어에서 UTF-16으로 CSV 파일을 쓰려면 encoding/csv
패키지와 encoding/binary
패키지를 사용합니다.
package main
import (
"encoding/csv"
"encoding/binary"
"os"
)
func main() {
file, err := os.Create("output.csv")
if err != nil {
panic(err)
}
defer file.Close()
w := csv.NewWriter(binary.UTF16BOM.Writer(file))
data := [][]string{
{"한국어", "日本語", "English"},
{"안녕하세요", "こんにちは", "Hello"},
}
w.WriteAll(data)
w.Flush()
}
위의 예제 코드에서는 encoding/binary
패키지의 UTF16BOM
을 사용하여 UTF-16LE 바이트 순서 표시 (BOM)을 파일에 쓰고, encoding/csv
패키지의 Writer
를 이용해 CSV 파일을 작성하고 있습니다.
2. UTF-16으로 CSV 파일 읽기
이어서, UTF-16으로 인코딩된 CSV 파일을 읽는 방법을 알아봅시다.
package main
import (
"encoding/csv"
"encoding/binary"
"os"
)
func main() {
file, err := os.Open("input.csv")
if err != nil {
panic(err)
}
defer file.Close()
r := csv.NewReader(binary.UTF16BOM.Reader(file))
records, err := r.ReadAll()
if err != nil {
panic(err)
}
for _, row := range records {
for _, field := range row {
// Do something with each field
}
}
}
위의 예제 코드에서는 encoding/binary
패키지의 UTF16BOM
을 사용하여 UTF-16LE BOM으로 인코딩된 CSV 파일을 읽고 있습니다.
UTF-16 인코딩을 다루는 방법에 대해서 간단히 살펴보았습니다. Go 언어로 CSV 파일을 UTF-16으로 쓰거나 읽을 때, 관련 패키지를 적절히 이용하여 작업할 수 있습니다.
참조:
- https://golang.org/pkg/encoding/csv/
- https://golang.org/pkg/encoding/binary/