Saltar al contenido

Cómo leer un archivo codificado ANSI que contiene caracteres especiales

El paso a paso o código que verás en este artículo es la solución más eficiente y efectiva que encontramos a tus dudas o problema.

Solución:

Utilizar Encoding.Default:

string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);

Sin embargo, debe tener en cuenta que eso lo lee usando la codificación predeterminada del sistema, que puede no ser la misma que la codificación del archivo. No hay una codificación única llamada ANSI, pero generalmente cuando la gente habla de “la codificación ANSI” se refiere a la página de códigos 1252 de Windows o lo que sea que use su caja.

Su código será más robusto si puede averiguar el exacto codificación utilizada.

Sería sensato si tuviera tales políticas que también tendría una codificación estándar acordada por el equipo. Para ser honesto, no veo por qué algún equipo usaría una codificación que no sea “Unicode (UtF-8 con firma) – Página de códigos 65001” (excepto quizás para páginas ASPX con códigos no latinos significativos). static contenido, pero aún así no puedo ver cómo sería un gran problema usar UTF-8).

Suponiendo que aún desea permitir mixed codificaciones, luego necesita una forma de determinar en qué codificación se guardó un archivo para saber a qué codificación pasar ReadAllText. No es fácil determinar esto a partir del archivo, sin embargo, usando Encoding.Default es probable que funcione bien. Dado que lo más probable es que solo tenga que lidiar con 2 codificaciones, VS (UTF-8 con firma) y una codificación ANSI común utilizada por sus máquinas (probablemente Windows-1252).

Por lo tanto usando

 string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);

trabajará. (Por lo que veo Jon ya ha posteado). Esto funciona porque cuando el BOM UTF-8 (que es lo que VS significa con el término “firma”) está presente al comienzo del archivo, el parámetro de codificación proporcionado se ignora y se usa UTF-8 de todos modos. Por lo tanto, donde el archivo se guarda con UTF-8, obtiene resultados correctos y donde se usa ANSI, es más probable que también obtenga resultados correctos.

Por cierto, si está procesando encabezados de archivos, no lo haría ReadAllLines facilitar las cosas?.

Reseñas y puntuaciones

Al final de la artículo puedes encontrar las observaciones de otros creadores, tú también eres capaz insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *