it-swarm-es.tech

¿Unicode, Unicode Big Endian o UTF-8? ¿Cuál es la diferencia? ¿Qué formato es mejor?

Cuando trato de guardar un archivo de texto con texto que no está en inglés en el Bloc de notas, tengo la opción de elegir entre nicode, nicode Big Endian y TF-8. ¿Cuál es la diferencia entre estos formatos?

Suponiendo que sí no quiero compatibilidad con versiones anteriores (con versiones o aplicaciones de SO anteriores) y sí no se preocupan por el tamaño del archivo, ¿cuál de estos formatos es mejor?

(Suponga que el texto puede estar en idiomas como chino o japonés, además de en otros idiomas).

Nota : De las respuestas y comentarios a continuación, parece que en la jerga del Bloc de notas, Unicode es UTF-16 (Little Endian), Unicode Big Endian es UTF-16 (Big Endian) y UTF-8 está bien UTF -8.

19
Ashwin Nanjappa

No sé. ¿Qué es mejor: una sierra o un martillo? :-)

nicode no es UTF

Sin embargo, hay algo en el artículo que es un poco más relevante para el tema en cuestión:

  • UTF-8 se enfoca en minimizar el tamaño de bytes para la representación de caracteres del conjunto ASCII (representación de longitud variable: cada carácter se representa en 1 a 4 bytes, y ASCII caracteres caben todos en 1 byte). Como dice Joel:

"¡Mira todos esos ceros!" dijeron, ya que eran estadounidenses y estaban mirando texto en inglés que rara vez usaba puntos de código por encima de U + 00FF. También eran hippies liberales en California que querían conservar (burla). Si fueran tejanos, no les habría importado engullir el doble de bytes. Pero esos débiles californianos no podían soportar la idea de duplicar la cantidad de almacenamiento que se necesitaba para las cuerdas

  • UTF-32 se centra en la exhaustividad y la representación de longitud fija, utilizando 4 bytes para todos los caracteres. Es la traducción más sencilla, que asigna directamente el punto de código Unicode a 4 bytes. Obviamente, no es muy eficiente en tamaño.

  • UTF-16 es un compromiso, ya que utiliza 2 bytes la mayor parte del tiempo, pero se expande a 2 * 2 bytes por carácter para representar ciertos caracteres, los que no están incluidos en el plano multilingüe básico (BMP).

Consulte también El mínimo absoluto que todo desarrollador de software debe conocer absoluta y positivamente sobre Unicode y conjuntos de caracteres (¡sin excusas!)

19
Jason Baker

Para los idiomas europeos, UTF-8 es más pequeño. Para las lenguas orientales, la diferencia no es tan clara.

Ambos manejarán todos los caracteres Unicode posibles, por lo que no debería haber ninguna diferencia en la compatibilidad.

4
Mark Ransom

Hay más codificaciones de caracteres Unicode de las que cree.

  • UTF 8

    La codificación UTF-8 es de ancho variable, que varía de 1 a 4 bytes, con los bits superiores de cada byte reservados como bits de control. Los bits iniciales del primer byte indican el número total de bytes utilizados para ese carácter. El valor escalar del punto de código de un carácter es la concatenación de los bits que no son de control. En esta tabla, x representa los 8 bits más bajos del valor Unicode, y representa los siguientes 8 bits más altos y z representa los bits más altos que eso.

    Unicode              Byte1     Byte2     Byte3     Byte4
    U+0000-U+007F       0xxxxxxx            
    U+0080-U+07FF       110yyyxx  10xxxxxx          
    U+0800-U+FFFF       1110yyyy  10yyyyxx  10xxxxxx    
    U+10000-U+10FFFF    11110zzz  10zzyyyy  10yyyyxx  10xxxxxx
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • UTF-32-BE
3
Brad Gilbert

"Unicode" es otro término para "UTF-16", que es una codificación del juego de caracteres Unicode en dieciséis bits por carácter. UTF-8 lo codifica en ocho bits por carácter.

En ambos casos, cualquier desbordamiento se asigna a otros 16 u ocho bits.

1
John Saunders

La única ventaja real con archivos pequeños como archivos de texto es el tamaño del archivo resultante. UTF-8 generalmente produce archivos más pequeños. Pero esta diferencia puede ser menos pronunciada con el texto chino/japonés.

1
zildjohn01

En una palabra, Unicode es un juego de caracteres , mientras que Unicode Big Endian y utf-8 son dos codificaciones , que se utilizan para almacenar caracteres como 01 en una computadora.

0
thuzhf