[go] CSV 파일의 인코딩 변환
CSV(Comma Separated Values) 파일은 일반적으로 데이터를 저장하고 전송하기 위해 사용되는 형식입니다. 하지만 때때로 CSV 파일을 열 때 인코딩 문제가 발생할 수 있습니다. 이 때는 인코딩을 변환해야 합니다. 이번 블로그에서는 Go 언어로 CSV 파일의 인코딩을 변환하는 방법에 대해 알아보겠습니다.
CSV 파일 읽기
우선, CSV 파일을 읽기 위해 encoding/csv
패키지를 사용할 수 있습니다. 아래의 예제 코드는 utf-8
로 인코딩된 CSV 파일을 읽는 방법을 보여줍니다.
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
file, err := os.Open("data.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
reader := csv.NewReader(file)
reader.Read()
}
CSV 파일의 인코딩 변환
CSV 파일의 인코딩을 변환하기 위해서는 일단 파일을 읽어들인 뒤 원하는 인코딩으로 변환하여 다시 저장해야 합니다. 이때 golang.org/x/text/encoding
패키지를 사용할 수 있습니다.
package main
import (
"encoding/csv"
"fmt"
"os"
"golang.org/x/text/encoding/charmap"
"golang.org/x/text/transform"
)
func main() {
file, err := os.Open("data.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
// 문자 인코딩 변환
reader := csv.NewReader(transform.NewReader(file, charmap.Windows1252.NewDecoder()))
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(records)
}
위의 예제 코드에서 charmap.Windows1252.NewDecoder()
를 사용하여 Windows-1252
에서 UTF-8
로의 문자 인코딩 변환이 이루어집니다.
인코딩 변환 후에는 새로운 CSV 파일로 데이터를 다시 쓸 수 있습니다.
file, err := os.Create("output.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
writer := csv.NewWriter(transform.NewWriter(file, charmap.Windows1252.NewEncoder()))
writer.WriteAll(records)
writer.Flush()
이제 CSV 파일의 데이터를 원하는 인코딩으로 변환하는 방법에 대해 알아보았습니다. 이를 활용하여 인코딩 문제를 해결할 수 있을 것입니다.