2009-03-31 66 views
281

¿Cuál es la diferencia entre el Unicode, UTF8, UTF7, UTF16, UTF32, ASCII y ANSI codificaciones?Unicode, UTF, ASCII, ANSI diferencias de formato

¿De qué manera son útiles para los programadores?

+5

muy relacionado: [UTF-8 vs Unicode] (http://stackoverflow.com/questions/643694/utf-8-vs-unicode) –

+0

El mejor sitio para referirse sería: http: // msdn. microsoft.com/en-us/library/dd374081(VS.85).aspx – RamSri

+0

http://www.tugay.biz/2016/07/what-is-ascii-and-unicode-and-character.html –

Respuesta

390

Bajando su lista:

  • "Unicode" no es una codificación, aunque por desgracia, una gran cantidad de documentación imprecisa usa para referirse a cualquier codificación Unicode ese sistema en particular usa por defecto. En Windows y Java, esto a menudo significa UTF-16; en muchos otros lugares, significa UTF-8. Correctamente, Unicode se refiere al juego de caracteres abstracto en sí mismo, no a una codificación particular.
  • UTF-16: 2 bytes por "unidad de código". Este es el formato nativo de cadenas en .NET, y generalmente en Windows y Java. Los valores fuera del Basic Multilingual Plane (BMP) se codifican como pares de sustitución. (Estos son relativamente raramente usados, lo cual es un buen trabajo, ya que muy pocos desarrolladores lo hacen bien, sospecho. Dudo mucho que lo haga).
  • UTF-8: Codificación de longitud variable, 1-4 bytes por punto de código. Los valores ASCII están codificados como ASCII usando 1 byte.
  • UTF-7: Generalmente se utiliza para la codificación de correo. Lo más probable es que si crees que lo necesitas y no estás haciendo el correo, estás equivocado. (Esa es solo mi experiencia de personas publicando en grupos de noticias, etc. correo externo, realmente no se usa ampliamente.)
  • UTF-32: codificación de ancho fijo usando 4 bytes por punto de código. Esto no es muy eficiente, pero hace la vida más fácil fuera del BMP. Tengo una clase de .NET Utf32String como parte de mi biblioteca MiscUtil, si alguna vez la quiere. (No se ha probado muy a fondo, claro).
  • ASCII: Codificación de un solo byte utilizando solo los 7 bits inferiores. (Código Unicode puntos 0-127.) Sin acentos, etc.
  • ANSI: No hay una codificación ANSI fija, hay muchas. Por lo general, cuando las personas dicen "ANSI", significan "la configuración regional/página de códigos predeterminada para mi sistema" que se obtiene a través de Encoding.Default, y suele ser Windows-1252, pero pueden ser otras configuraciones regionales.

Hay más en my Unicode page y tips for debugging Unicode problems.

El otro gran recurso de código es unicode.org que contiene más información de la que podrá encontrar en su camino, posiblemente el bit más útil sea code charts.

+0

Realmente pienso en ANSI como [Código de página 437] (http://en.wikipedia.org/wiki/Code_page_437Code), ya que eso era lo que ANSI Art utilizaba . Sin embargo, no creo que esté disponible en ASP.Net – lordscarlet

+2

El término "ANSI" cuando se aplica a las páginas de códigos de 8 bits de Microsoft es un nombre inapropiado. Se basaron en borradores enviados para la estandarización de ANSI, pero ANSI nunca los estandarizó. Windows-1252 (la página de códigos más comúnmente conocida como "ANSI") es similar a ISO 8859-1 (Latin-1), excepto que Windows-1252 tiene caracteres imprimibles en el rango 0x80..0x9F, donde ISO 8859-1 tiene caracteres de control en ese rango. Unicode también tiene caracteres de control en ese rango. https://en.wikipedia.org/wiki/Windows_code_page –

+0

@JonSkeet, tengo algunas páginas web que envían mensajes de correo electrónico. Actualmente usan UTF8. ¿Debo estar pensando en cambiarlos a UTF7? – jp2code

53

leer un poco para que pueda empezar en la codificación de caracteres: Joel on Software: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

Por cierto - ASP.NET no tiene nada que ver con ello. Las codificaciones son universales.

+1

muy lectura informativa, gracias! –

+4

Respondido aquí 6 años después de que el artículo fue escrito. Lo leí 8 años después de escribir la publicación. 14 años después y sigue siendo una buena lectura. Eso es más de la mitad de mi vida atrás. Increíble. –

+1

Artículo increíble!Es bueno ver que el autor hizo otras cosas buenas antes de crear Stackoverflow ... –

Cuestiones relacionadas