Lösung des Problems mit der Zeichenverfälschung im exportierten CSV-Datei unter Golang

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)
        }
    }
}

Referenz