Maison > développement back-end > Golang > Comment gérer les fichiers avec une marque d'ordre d'octets (BOM) dans Go ?

Comment gérer les fichiers avec une marque d'ordre d'octets (BOM) dans Go ?

Linda Hamilton
Libérer: 2024-11-03 15:31:30
original
615 Les gens l'ont consulté

How to Handle Files with a Byte-Order Mark (BOM) in Go?

Lecture de fichiers avec une marque d'ordre d'octet (BOM) dans Go

Dans Go, gestion des fichiers Unicode avec ou sans ordre d'octet La marque (BOM) nécessite un traitement manuel. Bien qu'il n'existe pas de méthode établie au sein de la bibliothèque principale, l'approche courante implique :

Utilisation d'un lecteur tamponné :

Java.io.BufferedReader peut être utilisé pour lire les données d'un fichier, y compris les premiers octets. Voici un exemple :

import (
    "bufio"
    "os"
    "log"
)

func main() {
    fd, err := os.Open("filename")
    if err != nil {
        log.Fatal(err)
    }
    defer fd.Close()
    br := bufio.NewReader(fd)
    r, _, err := br.ReadRune()
    if err != nil {
        log.Fatal(err)
    }
    if r != '\uFEFF' {
        br.UnreadRune()
    }
}
Copier après la connexion

Lecture directe des premiers octets :

Si l'interface io.Seeker est prise en charge, les trois premiers octets peuvent être lus et vérifiés. Si une nomenclature n'est pas identifiée, le pointeur de fichier peut être réinitialisé au début.

import (
    "os"
    "log"
)

func main() {
    fd, err := os.Open("filename")
    if err != nil {
        log.Fatal(err)
    }
    defer fd.Close()
    var bom [3]byte
    _, err = fd.Read(bom[:])
    if err != nil {
        log.Fatal(err)
    }
    if bom[0] != 0xef || bom[1] != 0xbb || bom[2] != 0xbf {
        _, err = fd.Seek(0, 0)
        if err != nil {
            log.Fatal(err)
        }
    }
}
Copier après la connexion

Remarque :

Ces approches supposent un encodage UTF-8. La gestion de différents encodages ajoute des complexités supplémentaires.

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