Lorsque vous utilisez Golang pour écrire des fichiers, le contenu du fichier sera parfois tronqué car Golang utilise le codage UTF-8 pour écrire des fichiers par défaut. Si vous utilisez d'autres codages lors de l'écriture de fichiers, des caractères tronqués apparaîtront.
Alors, comment pouvons-nous éviter le problème des fichiers tronqués écrits en Golang ? Voici quelques solutions :
Si vous souhaitez éviter les caractères tronqués, le moyen le plus simple est d'utiliser l'encodage UTF-8. Dans Golang, vous pouvez définir l'encodage lors de l'écriture de fichiers via le code suivant :
file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() file.WriteString("") // 写入UTF-8的BOM字符 writer := bufio.NewWriter(file) encoder := unicode.UTF8.NewEncoder() writer = transform.NewWriter(writer, encoder) _, err = writer.WriteString("这是一段中文文本") if err != nil { log.Fatal(err) }
Le caractère BOM est utilisé dans ce code pour indiquer que le fichier utilise l'encodage UTF-8. Assurez-vous que le texte écrit est codé en UTF-8 à l’aide de l’encodeur UTF8 et de la transformation du convertisseur sur le flux d’écriture.
En plus d'utiliser l'encodage UTF-8, golang prend également en charge de nombreux autres encodages. Vous pouvez utiliser le package encoding/pinyin pour convertir du texte en un encodage spécifique, tel que GBK ou Big5.
Ce qui suit est un exemple de code qui utilise l'encodage GBK pour écrire du texte dans un fichier :
file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() writer := bufio.NewWriter(file) encoder := simplifiedchinese.GBK.NewEncoder() writer = transform.NewWriter(writer, encoder) _, err = writer.WriteString("这是一段中文文本") if err != nil { log.Fatal(err) }
Ce code utilise simplifiéchinese.GBK.NewEncoder() pour encoder le texte écrit. Vous pouvez choisir d'autres formats d'encodage selon vos besoins.
En plus d'utiliser la bibliothèque standard de Golang pour écrire des fichiers, vous pouvez également utiliser des bibliothèques tierces, telles que github.com/axgle/mahonia, pour résoudre le problème tronqué.
Ce qui suit est un exemple de code qui utilise la bibliothèque mahonia pour écrire du texte dans un fichier :
import ( "github.com/axgle/mahonia" ) file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() writer := bufio.NewWriter(file) enc := mahonia.NewEncoder("gbk") writer.WriteString(enc.ConvertString("这是一段中文文本")) writer.Flush()
mahonia.NewEncoder("gbk") est utilisé dans ce code pour encoder le texte écrit.
Résumé
La meilleure façon d'éviter les caractères tronqués lors de l'écriture de fichiers en Golang est de spécifier le format d'encodage correct lors de l'écriture du code. Le codage UTF-8 est utilisé par défaut. Si vous souhaitez utiliser d'autres formats d'encodage, vous pouvez utiliser un encodeur ou une bibliothèque tierce pour le faire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!