utf8 - Convertir un archivo de texto de ANSI a ASCII usando C#
convertir de ansi a utf 8 (2)
Básicamente, debe especificar una Encoding
al leer / escribir el archivo. Por ejemplo:
// read with the **local** system default ANSI page
string text = File.ReadAllText(path, Encoding.Default);
// ** I''m not sure you need to do this next bit - it sounds like
// you just want to read it? **
// write as ASCII (if you want to do this)
File.WriteAllText(path2, text, Encoding.ASCII);
Tenga en cuenta que una vez que lo haya leído, el text
es realmente unicode cuando está en la memoria.
Puedes elegir diferentes páginas de códigos usando Encoding.GetEncoding
.
Tengo un archivo codificado ANSI y quiero convertir las líneas que leí del archivo a ASCII.
¿Cómo hago para hacer esto en C #?
EDITAR: ¿Qué sucede si uso "BinaryReader" BinaryReader reader = new BinaryReader(input, Encoding.Default);
pero este lector toma (Stream, Encoding) pero "Stream" es un resumen! ¿Y dónde debo poner la ruta del archivo que leerá?
Una conversión directa de ANSI a ASCII puede no ser siempre posible, ya que ANSI es un superconjunto de ASCII.
Sin embargo, puedes intentar convertir a UTF-8 usando Encoding
:
Encoding ANSI = Encoding.GetEncoding(1252);
byte[] ansiBytes = ANSI.GetBytes(str);
byte[] utf8Bytes = Encoding.Convert(ANSI, Encoding.UTF8, ansiBytes);
String utf8String = Encoding.UTF8.GetString(utf8Bytes);
Por supuesto, puede reemplazar UTF8 con ASCII, pero eso no tiene sentido ya que:
- Si la cadena original no contiene ningún byte> 126, entonces ya es ASCII
- si la cadena original contiene uno o más bytes> 126, esos bytes se perderán
ACTUALIZAR:
En respuesta a la pregunta actualizada, puede usar BinaryReader
así:
BinaryReader reader = new BinaryReader(File.Open("foo.txt", FileMode.Open),
Encoding.GetEncoding(1252));