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