[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으로 쓰거나 읽을 때, 관련 패키지를 적절히 이용하여 작업할 수 있습니다.

참조: