Identifier avec précision l'encodage des fichiers : méthodes pratiques
L'identification correcte de l'encodage des fichiers est cruciale pour le traitement de texte. Cependant, l'attribut StreamReader.CurrentEncoding
ne fournit souvent pas de résultats précis. Pour résoudre ce problème, une méthode plus fiable consiste à analyser la marque d’ordre des octets (BOM) du fichier.
Le rôle de la nomenclature
La BOM est une séquence d'octets qui indique le caractère boutien et l'encodage d'un fichier texte. Les nomenclatures courantes incluent :
Déterminer l'encodage des fichiers en fonction de la nomenclature
Le code C# suivant fournit une implémentation détaillée :
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM byte[] bom = new byte[4]; using (var file = new FileStream(filename, FileMode.Open, FileAccess.Read)) { file.Read(bom, 0, 4); } // 分析 BOM if (bom[0] == 0x2b && bom[1] == 0x2f && bom[2] == 0x76) return Encoding.UTF7; if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf) return Encoding.UTF8; if (bom[0] == 0xff && bom[1] == 0xfe && bom[2] == 0 && bom[3] == 0) return Encoding.UTF32; //UTF-32LE if (bom[0] == 0xff && bom[1] == 0xfe) return Encoding.Unicode; //UTF-16LE if (bom[0] == 0xfe && bom[1] == 0xff) return Encoding.BigEndianUnicode; //UTF-16BE if (bom[0] == 0 && bom[1] == 0 && bom[2] == 0xfe && bom[3] == 0xff) return new UTF32Encoding(true, true); //UTF-32BE // 如果未检测到 BOM,则回退到 ASCII return Encoding.ASCII; }</code>
En utilisant cette méthode, vous pouvez identifier avec précision l'encodage de n'importe quel fichier texte, garantissant ainsi une interprétation correcte des données et un traitement du texte.
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!