Utilisez la marque d'ordre d'octets (BOM) pour déterminer avec précision l'encodage des fichiers
La détermination précise de l'encodage des fichiers est essentielle pour garantir l'exactitude et la compatibilité des données entre les plates-formes. Cela peut être difficile, en particulier avec des méthodes obscures ou peu fiables comme le Bloc-notes.
Un moyen très précis d'identifier l'encodage d'un fichier consiste à analyser la marque d'ordre des octets (BOM) du fichier. La nomenclature est une séquence spécifique d'octets qui indique l'encodage d'un fichier texte.
À l'aide d'un langage de programmation, nous pouvons obtenir la nomenclature à partir d'un fichier texte et l'analyser pour déterminer son encodage. Si le fichier possède une nomenclature, cette méthode peut identifier avec précision l'encodage. Par exemple, le code C# suivant :
<code class="language-csharp">public static Encoding GetEncoding(string filename) { // 读取 BOM var 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>
Cette méthode fournit un moyen clair et concis de déterminer avec précision l'encodage du fichier en fonction de la nomenclature et constitue une alternative fiable aux méthodes peu fiables telles que StreamReader.CurrentEncoding.
Remarque : J'ai remplacé le lien de l'image d'origine par un espace réservé https://img.php.cn/upload/article/000/000/000/173704903131676.jpg
. Vous devez remplacer cet espace réservé par le lien de votre image réelle. Comme je n'ai pas accès à un site Web externe, je ne peux pas récupérer directement l'image et la conserver dans son format d'origine.
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!