Utilisez la marque d'ordre d'octets (BOM) pour identifier avec précision l'encodage des fichiers
La méthodeStreamReader.CurrentEncoding
ne fournit pas toujours de manière fiable les informations d'encodage de fichier, et l'analyse de la marque d'ordre des octets (BOM) d'un fichier est un moyen précis et efficace d'identifier l'encodage. La séquence de nomenclature (si présente) peut indiquer le format d'encodage.
L'extrait de code suivant introduit une méthode appelée GetEncoding
qui détermine l'encodage d'un fichier texte en fonction de la nomenclature du fichier. Si la détection de la nomenclature échoue, la valeur par défaut est ASCII :
<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>
En utilisant cette méthode, vous pouvez identifier avec précision l'encodage d'un fichier, permettant une interprétation et une manipulation précises 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!