problemas al Convertir de Unicode a Ascii

25/07/2005 - 06:17 por Hugo Nugra | Informe spam
Hola amigos. Necesito convertir una cadena unicode a su equivalente en
ASCII. he intentado de la siguiente manera:

using System;

using System.IO;



string cadenaDeImpresion = "hola áéíóúñÑ";

ASCIIEncoding encoding = new ASCIIEncoding();

byte[] bytes = new byte[encoding.GetMaxByteCount(cadenaDeImpresion.Length)];

encoding.GetBytes(cadenaDeImpresion, 0, cadenaDeImpresion.Length, bytes, 0);



el problema es que ASCIIEncoding codifica caracteres Unicode como caracteres
ASCII sencillos de 7 bits, o sea, hasta el ASCII 127, dejando fuera al
resto. Por lo que no es posible convertir cadenas que contengan vocales con
tildes, por citar un ejemplo.

¿Para qué necesito convertir de unicode a ASCII?.

Estoy desarrollando una aplicación que maneja las impresoras matriciales en
modo texto, al estilo DOS.
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
25/07/2005 - 16:36 | Informe spam
el problema es que ASCIIEncoding codifica caracteres Unicode como
caracteres ASCII sencillos de 7 bits, o sea, hasta el ASCII 127,
dejando fuera al resto. Por lo que no es posible convertir cadenas
que contengan vocales con tildes, por citar un ejemplo.



Entonces hace lo correcto. Estrictamente hablando eso es lo que es ASCII y
cualquier cosa mas alla de los 7 bits ya depende de la pagina de codigo
usada. Lo que debes hacer es obtener un encoding con la pagina 437 que es la
mas comun:

string cadenaDeImpresion = "hola áéíóúñÑ";
Encoding encoding = Encoding.GetEncoding(437);
byte[] bytes = new byte[encoding.GetMaxByteCount(cadenaDeImpresion.Length)];
encoding.GetBytes(cadenaDeImpresion, 0, cadenaDeImpresion.Length, bytes, 0);

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Preguntas similares