"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo detectar eficientemente la codificación de cadenas en C#?

¿Cómo detectar eficientemente la codificación de cadenas en C#?

Publicado el 2025-04-20
Navegar:848

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

Detección eficiente de la codificación de cadena en C#

El juicio preciso de la codificación de cadenas es crucial para procesar datos de texto de diferentes fuentes. Este artículo explorará cómo lograr este objetivo de manera eficiente en C#.

pistas de codificación

Hay varias formas de determinar la codificación de una cadena sin una declaración explícita:

  1. bom (marca de orden de byte): muchas codificaciones de Unicode contienen firmas de tres o cuatro bytes al comienzo de un archivo para indicar su codificación. Por ejemplo, UTF-8 usa 0xefBBBF.
  2. sonda/cheque heurística: revisando los primeros bytes de una cadena, podemos intentar detectar la codificación. Por ejemplo, UTF-8 tiende a tener un patrón de byte donde se establece un bit alto específico.
  3. metadata en archivo: algunos archivos incrustan información codificada en su contenido o metadatos. Encuentre patrones en texto como "Charset = XYZ" o "Coding = XYZ".

Descripción general de la solución

El código proporcionado por

combina los tres métodos para determinar la codificación de una cadena, primero de la cual es la detección de BOM. Si no se encuentra el BOM, el código usa un detector para identificar heurísticamente codificaciones comunes como UTF-8 y UTF-16. Finalmente, si no se encuentra una codificación adecuada, volverá a la página de código predeterminada del sistema.

Este código no solo detecta la codificación, sino que también devuelve el texto decodificado para proporcionar la información requerida en su totalidad.

implementación de código

El siguiente código C# implementa esta solución:

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, proporcione la ruta del archivo como la cadena y recupere el texto encodado y decodificado detectado como los parámetros de salida. Aquí hay un ejemplo:

`` `C# texto de cadena; Codificación codificación = detectTextEncoding ("my_file.txt", out texto); Console.WriteLine ("Codificación detectada:" codificación.EncodingName); Console.WriteLine ("Texto decodificado:" Texto); `` `` ``

En general, este código proporciona una forma poderosa de determinar la codificación de cadenas en C#, aprovechando las verificaciones de BOM y heurística para garantizar una detección precisa.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3