Saltar al contenido

Problema de conversión de ANSI a UTF8 C#

Es fundamental interpretar el código de forma correcta previamente a adaptarlo a tu trabajo y si ttienes algo que aportar puedes comentarlo.

Solución:

¿Tienes alguna idea de por qué sucede esto?

Sí, llegas demasiado tarde. Debe especificar ANSI cuando lea el string desde el archivo. En la memoria siempre es Unicode (UTF16).

Cuando convierte a ASCII, inmediatamente pierde todos los caracteres que no están en inglés (incluidos los que tienen acento) porque ASCII tiene solo 127 (7 bits) de caracteres.

Haces una extraña manipulación. string en .net está en UTF-16, por lo que una vez que regrese stringno byte[] esto no importa

Creo que deberías hacer: (Supongo que por ANSI te refieres a Latin1)

public byte[] Encode(string text)

    return Encoding.GetEncoding(1252).GetBytes(text);

Dado que la pregunta no estaba muy clara, hay un comentario razonable de que en realidad podría necesitar este:

public string Decode(byte[] data)

    return Encoding.GetEncoding(1252).GetString(data);

Esta es probablemente la forma más fácil:

byte[] ansiBytes = File.ReadAllBytes("inputfilename.txt");
var utf8String = Encoding.Default.GetString(ansiBytes);
File.WriteAllText("outputfilename.txt", utf8String);

Te mostramos comentarios y valoraciones

Si te animas, eres capaz de dejar una noticia acerca de qué le añadirías a este enunciado.

¡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 *