Maison > développement back-end > Golang > Comment lire des fichiers texte codés non UTF-8 dans Go ?

Comment lire des fichiers texte codés non UTF-8 dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-01 03:29:13
original
211 Les gens l'ont consulté

How to Read Non-UTF-8 Encoded Text Files in Go?

Lecture de fichiers texte non UTF-8 dans Go

Dans Go, la bibliothèque standard suppose le codage UTF-8 pour tous les fichiers texte. Toutefois, cela peut ne pas être le cas pour les fichiers codés dans d'autres jeux de caractères. Cet article explique comment lire des fichiers texte non UTF-8 dans Go à l'aide du package golang.org/x/text/encoding.

Le package golang.org/x/text/encoding fournit une interface pour les fichiers génériques. encodages de caractères pouvant être convertis vers et depuis UTF-8. Par exemple, le sous-paquet golang.org/x/text/encoding/simplifiedchinese fournit des encodeurs pour GB18030, GBK et HZ-GB2312.

Exemple : Lecture d'un fichier codé GBK

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"

    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

func main() {
    const filename = "example_GBK_file"

    // Read UTF-8 from a GBK encoded file
    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder())

    // Read converted UTF-8 from `r` as needed
    sc := bufio.NewScanner(r)
    for sc.Scan() {
        fmt.Printf("Read line: %s\n", sc.Bytes())
    }
    if err := sc.Err(); err != nil {
        log.Fatal(err)
    }
    if err = f.Close(); err != nil {
        log.Fatal(err)
    }
}
Copier après la connexion

Cet exemple utilise un transform.NewReader pour envelopper un objet os.File et effectuez un décodage à la volée de GBK vers UTF-8.

Notes supplémentaires :

  • Cette approche utilise uniquement les packages fournis par les auteurs Go, éliminant les dépendances sur des packages tiers ou cgo.
  • Vous pouvez facilement remplacer l'implémentation de l'encodage pour prendre en charge d'autres jeux de caractères, tels que Big5, Windows1252, ou EUCKR.
  • Reportez-vous aux packages golang.org/x/text/encoding et golang.org/x/text/encoding/simplifiedchinese pour plus de détails.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal