Diferencias de formato Unicode, UTF, ASCII, ANSI

Resuelto web dunia asked hace 15 años • 2 respuestas

¿ Cuál es la diferencia entre las codificaciones Unicode, UTF8, UTF7, UTF16, UTF32, ASCIIy ?ANSI

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

web dunia avatar Mar 31 '09 13:03 web dunia
Aceptado

Bajando por tu lista:

  • " Unicode " no es una codificación, aunque desafortunadamente, mucha documentación la utiliza de manera imprecisa para referirse a cualquier codificación Unicode que ese sistema en particular utilice de forma predeterminada. En Windows y Java, esto suele significar UTF-16; en muchos otros lugares significa UTF-8. Correctamente, Unicode se refiere al conjunto de caracteres abstracto en sí, no a ninguna codificación en particular.
  • UTF-16 : 2 bytes por "unidad de código". Este es el formato nativo de cadenas en .NET y, en general, en Windows y Java. Los valores fuera del plano multilingüe básico (BMP) se codifican como pares sustitutos. Estos solían usarse con relativa poca frecuencia, pero ahora muchas aplicaciones de consumo deberán conocer los caracteres que no son BMP para poder admitir emojis.
  • UTF-8 : codificación de longitud variable, de 1 a 4 bytes por punto de código. Los valores ASCII se codifican como ASCII utilizando 1 byte.
  • UTF-7 : normalmente se utiliza para codificar correo. Lo más probable es que si crees que lo necesitas y no estás enviando correo, estás equivocado. (Esa es solo mi experiencia con personas que publican en grupos de noticias, etc.; fuera del correo, en realidad no se usa mucho).
  • UTF-32 : codificación de ancho fijo utilizando 4 bytes por punto de código. Esto no es muy eficiente, pero facilita la vida fuera del BMP. Tengo una Utf32Stringclase .NET como parte de mi biblioteca MiscUtil , por si alguna vez la deseas. (No se ha probado muy exhaustivamente, claro está).
  • ASCII : codificación de un solo byte utilizando únicamente los 7 bits inferiores. (Puntos de código Unicode 0-127.) Sin acentos, etc.
  • ANSI: No hay una codificación ANSI fija, hay muchas. Por lo general, cuando la gente dice "ANSI", se refieren a "la configuración regional/página de códigos predeterminada para mi sistema" que se obtiene a través de Encoding.Default y, a menudo, es Windows-1252 , pero puede ser de otras configuraciones regionales.

Hay más en mi página Unicode y consejos para depurar problemas Unicode .

El otro gran recurso de código es unicode.org , que contiene más información de la que jamás podrá leer; posiblemente la parte más útil sean los gráficos de códigos .

Jon Skeet avatar Mar 31 '2009 06:03 Jon Skeet

Algunas lecturas para comenzar con las codificaciones de caracteres: Joel sobre el software: el mínimo absoluto que todo desarrollador de software debe conocer absoluta y positivamente sobre Unicode y los conjuntos de caracteres (¡sin excusas!)

Por cierto, ASP.NET no tiene nada que ver con eso. Las codificaciones son universales.

Tomalak avatar Mar 31 '2009 06:03 Tomalak