2010-01-11 21 views
5

Hola soy un principiante en programación y desarrollo de redes. Tengo una pregunta sobre la codificación ASCII y Unicode.C# ASCII o Unicode

en MSDN y otros ejemplos web hacer lo siguiente:

byte[] byteData = Encoding.ASCII.GetBytes(data); 

es esto porque estos ejemplos de código son viejos? no debería ser:

byte[] byteData = Encoding.Unicode.GetBytes(data); 

gracias por su contribución!

Respuesta

10

Depende - ¿quiere que el resultado sea en ASCII o UTF-16? Cada uno está equivocado cuando quieres el otro.

Si está hablando de algún protocolo de red, debe averiguar qué codificación de caracteres espera el protocolo. Usa la codificación incorrecta y sucederán cosas malas.

Por supuesto, ASCII tiene restricciones masivas, está muy basada en el inglés (solo caracteres latinos, sin acentos) pero es correcta para algunos protocolos. Otros pueden usar UTF-16 (Encoding.Unicode), UTF-8 u otras codificaciones ... o le permitirán especificar la codificación usted mismo dentro del protocolo.

+0

estoy implementando ambos lados del cliente/servidor, así que puedo decidir. estoy viendo Unicode como la opción, ya que es capaz de alojar diferentes idiomas. ¡Puedo estar equivocado! – iTEgg

+7

@ikurtz: Sugeriría utilizar UTF-8 en lugar de Unicode para la mayoría de las cosas, ya que * normalmente * reduce el tráfico. Hay excepciones (los caracteres Lejos del Este a menudo terminan siendo más grandes en UTF-8) y hay otras desventajas (no se puede calcular el tamaño de los datos binarios directamente a partir del número de puntos de código) pero generalmente es una buena idea IMO . –

+0

muy buen punto sobre cómo obtener el tamaño del mensaje! entiendo por qué usan ASCII. – iTEgg

Cuestiones relacionadas