Maison > développement back-end > C++ > Comment puis-je détecter efficacement l'encodage d'une chaîne en C# ?

Comment puis-je détecter efficacement l'encodage d'une chaîne en C# ?

Susan Sarandon
Libérer: 2025-01-20 19:13:10
original
912 Les gens l'ont consulté

How Can I Efficiently Detect a String's Encoding in C#?

Détecter efficacement l'encodage de chaînes en C#

La détermination précise de l'encodage des chaînes est essentielle pour le traitement des données textuelles provenant de différentes sources. Cet article explique comment y parvenir efficacement en C#.

Indices de codage

Il existe plusieurs façons de déterminer l'encodage d'une chaîne sans le préciser explicitement :

  1. BOM (Byte Order Mark) : De nombreux encodages Unicode incluent une signature de trois ou quatre octets au début du fichier pour indiquer son encodage. Par exemple, UTF-8 utilise 0xEFBBBF.
  2. Détection/vérifications heuristiques : En vérifiant les premiers octets de la chaîne, nous pouvons essayer de détecter l'encodage. Par exemple, UTF-8 a tendance à avoir un modèle d'octets avec un jeu de bits haut spécifique.
  3. Métadonnées dans les fichiers : Certains fichiers intègrent des informations d'encodage dans leur contenu ou leurs métadonnées. Recherchez des modèles dans le texte tels que « charset=xyz » ou « encoding=xyz ».

Présentation de la solution

Le code fourni combine les trois méthodes pour déterminer l'encodage d'une chaîne, en commençant par la détection de la nomenclature. Si la nomenclature n'est pas trouvée, le code utilise des détecteurs pour identifier de manière heuristique les codages courants tels que UTF-8 et UTF-16. Enfin, si aucun codage approprié n'est trouvé, il reviendra à la page de codes par défaut du système.

Ce code détecte non seulement l'encodage, mais renvoie également le texte décodé pour fournir pleinement les informations requises.

Mise en œuvre du code

Le code C# suivant implémente cette solution :

public Encoding detectTextEncoding(string filename, out String text, int taster = 1000)
{
    // 检查BOM
    // 为简洁起见省略

    // 基于探测器的编码检测
    bool utf8 = false;
    int i = 0;
    while (i < taster) {
        // 省略具体实现细节
    }

    // ... (其余代码省略)
}
Copier après la connexion

Utilisation

Pour utiliser ce code, fournissez le chemin du fichier sous forme de chaîne et récupérez l'encodage détecté et le texte décodé en tant que paramètres de sortie. Voici un exemple :

```c# texte de chaîne ; Encodage encoding = detectTextEncoding("mon_fichier.txt", hors texte); Console.WriteLine("Encodage détecté : " encoding.EncodingName); Console.WriteLine("Texte décodé : " texte); ```

En résumé, ce code fournit un moyen puissant de déterminer l'encodage d'une chaîne en C#, en utilisant la nomenclature et des vérifications heuristiques pour garantir une détection précise.

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!

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