"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como detectar com eficiência a codificação de string em C#?

Como detectar com eficiência a codificação de string em C#?

Postado em 2025-04-20
Navegar:571

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

Detecção eficiente da codificação da string em c#

julgamento preciso da codificação da string é crucial para o processamento de dados de texto de diferentes fontes. Este artigo explorará como atingir esse objetivo com eficiência em C#.

codificando pistas

Existem várias maneiras de determinar a codificação de uma string sem declaração explícita:

  1. BOM (BYTE Order Mark): Muitas codificações Unicode contêm assinaturas de três ou quatro bytes no início de um arquivo para indicar sua codificação. Por exemplo, o UTF-8 usa 0xefbbbf.
  2. sonda/heurística verificação: Verificando os primeiros bytes de uma string, podemos tentar detectar o codificação. Por exemplo, o UTF-8 tende a ter um padrão de bytes em que um bit alto específico é definido.
  3. metadata em arquivo: Alguns arquivos incorporaram informações codificadas em seu conteúdo ou metadata. Encontre padrões no texto como "charset = xyz" ou "codificação = xyz".

Visão geral da solução

O código fornecido por

combina todos os três métodos para determinar a codificação de uma string, a primeira das quais é a detecção BOM. Se o BOM não for encontrado, o código usará um detector para identificar heuristicamente codificações comuns, como UTF-8 e UTF-16. Finalmente, se nenhuma codificação adequada for encontrada, ela voltará à página de código padrão do sistema.

Este código não apenas detecta a codificação, mas também retorna o texto decodificado para fornecer as informações necessárias integralmente.

Implementação de código

O seguinte código C# implementa esta solução:

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

    // 基于探测器的编码检测
    bool utf8 = false;
    int i = 0;
    while (i 

Método de uso

Para usar este código, forneça o caminho do arquivo como a string e recupere o texto codificado e decodificado detectado como os parâmetros de saída. Aqui está um exemplo:

`` `C# texto de string; Codificação Encoding = DetectTextEncoding ("my_file.txt", texto out); Console.WriteLine ("codificação detectada:" coding.encodingName); Console.WriteLine ("texto decodificado:" texto); `` `

No geral, esse código fornece uma maneira poderosa de determinar a codificação de strings em C#, alavancando as verificações BOM e heurísticas para garantir uma detecção precisa.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3