Résoudre le problème de corruption des caractères coréens dans un fichier exporté en csv depuis Golang

Résoudre le problème de corruption des caractères coréens dans un fichier exporté en csv depuis Golang

23 septembre 2023

BOM

Excel a besoin d’un BOM au début du fichier pour lire correctement les fichiers CSV encodés en UTF-8.

BOM : Marque d’ordre d’octet (Byte Order Mark, BOM) est le caractère U+FEFF d’unicode, qui agit comme un nombre magique. Ajouté au début du document, il peut transmettre plusieurs informations au programme qui lit le texte.

Dans le code

Pour prévenir le problème de corruption des caractères coréens lorsque vous utilisez le csv en Golang, vous pouvez procéder comme suit :

package main

import (
    "encoding/csv"
    "os"
)

func main() {
    file, err := os.Create("test.csv")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // NOTE : Ajouter le BOM UTF-8
    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)
        }
    }
}

Référence