Lösung des Problems mit der Zeichenverfälschung im exportierten CSV-Datei unter Golang
23. September 2023
BOM
Excel benötigt am Anfang der Datei eine BOM, um eine UTF-8-codierte CSV-Datei korrekt zu lesen.
BOM: Byte Order Mark (Byte-Reihenfolgemarkierung, BOM) ist das Unicode-Zeichen U+FEFF zur Byte-Reihenfolgemarkierung und kann als Magic Number am Anfang eines Dokuments hinzugefügt werden, um Programmen verschiedene Informationen zu übermitteln.
Im Code
Wenn Sie in Golang csv verwenden, können Sie das Problem der Zeichenverfälschung wie folgt verhindern.
package main
import (
"encoding/csv"
"os"
)
func main() {
file, err := os.Create("test.csv")
if err != nil {
panic(err)
}
defer file.Close()
// HINWEIS: UTF-8 BOM hinzufügen
file.WriteString("\xEF\xBB\xBF")
writer := csv.NewWriter(file)
defer writer.Flush()
data := [][]string{
{"이름", "나이", "주소"},
{"홍길동", "30", "서울"},
{"김영희", "25", "부산"},
}
for _, value := range data {
err := writer.Write(value)
if err != nil {
panic(err)
}
}
}