"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment détecter efficacement le codage des chaînes en C #?

Comment détecter efficacement le codage des chaînes en C #?

Publié le 2025-04-20
Parcourir:308

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

Détection efficace du codage de chaîne en c #

Un jugement précis du codage des chaînes est crucial pour le traitement des données de texte à partir de différentes sources. Cet article explorera comment atteindre cet objectif efficacement en C #.

CODING INDS

Il existe plusieurs façons de déterminer le codage d'une chaîne sans déclaration explicite:

  1. bom (byte order mark): De nombreux codages Unicode contiennent des signatures de trois octets ou quatre octets au début d'un fichier pour indiquer leur codage. Par exemple, UTF-8 utilise 0XEFBBBF.
  2. sonde / heuristic check: En vérifiant les premiers octets d'une chaîne, nous pouvons essayer de détecter le codage. Par exemple, UTF-8 a tendance à avoir un motif d'octet où un bit élevé spécifique est défini.
  3. Metadata dans fichier: Certains fichiers intégrent des informations codées dans leur contenu ou leurs métadonnées. Trouvez des modèles dans du texte tels que "charset = xyz" ou "coding = xyz".

Présentation de la solution

Le code fourni par

combine les trois méthodes pour déterminer le codage d'une chaîne, dont la détection BOM. Si la nomenclature n'est pas trouvée, le code utilise un détecteur pour identifier heuristiquement des encodages communs tels que UTF-8 et UTF-16. Enfin, si aucun encodage approprié n'est trouvé, il retombera à la page de code par défaut du système.

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

implémentation de 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 

Méthode d'utilisation

Pour utiliser ce code, fournissez le chemin de fichier comme chaîne et récupérez le texte codé et décodé détecté comme paramètres de sortie. Voici un exemple:

`` C # Texte de chaîne; Encoding Encoding = DetectTexeDcoding ("my_file.txt", texte out); Console.WriteLine ("Détected Encoding:" Encoding.EncodingName); Console.WriteLine ("Texte décodé:" Texte); `` '

Dans l'ensemble, ce code fournit un moyen puissant de déterminer le codage des chaînes en C #, en tirant parti des vérifications BOM et heuristiques pour assurer une détection précise.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3