Maison > développement back-end > C++ > Comment puis-je identifier avec précision l'encodage d'un fichier à l'aide de marques d'ordre d'octets (BOM) ?

Comment puis-je identifier avec précision l'encodage d'un fichier à l'aide de marques d'ordre d'octets (BOM) ?

DDD
Libérer: 2025-01-17 01:47:09
original
1002 Les gens l'ont consulté

How Can I Precisely Identify a File's Encoding Using Byte Order Marks (BOMs)?

Utilisez la marque d'ordre d'octets (BOM) pour identifier avec précision l'encodage des fichiers

La méthode

StreamReader.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>
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal