ejemplos codigo codificacion caracteres unicode utf-8

unicode - codigo - codificacion utf-8



¿Cuál es la diferencia entre Unicode y UTF-8? (9)

Esta pregunta ya tiene una respuesta aquí:

Considerar:

¿Es cierto que unicode=utf16 ?

Muchos dicen que Unicode es un estándar, no una codificación, pero la mayoría de los editores admiten guardar como codificación Unicode en realidad.


El desarrollo de Unicode tuvo como objetivo crear un nuevo estándar para mapear los caracteres en la gran mayoría de los idiomas que se usan hoy en día, junto con otros personajes que no son tan esenciales pero que podrían ser necesarios para crear el texto. UTF-8 es solo una de las muchas maneras en que puede codificar los archivos porque hay muchas maneras de codificar los caracteres dentro de un archivo en Unicode.

Fuente:

http://www.differencebetween.net/technology/difference-between-unicode-and-utf-8/


la mayoría de los editores admiten guardar como codificación ''Unicode'' en realidad.

Este es un desafortunado error perpetrado por Windows.

Debido a que Windows usa la codificación UTF-16LE internamente como el formato de almacenamiento de memoria para cadenas Unicode, considera que esta es la codificación natural del texto Unicode. En el mundo de Windows, existen cadenas ANSI (la página de códigos del sistema en la máquina actual, sujeta a total desponibilidad) y hay cadenas Unicode (almacenadas internamente como UTF-16LE).

Todo esto fue ideado en los primeros días de Unicode, antes de que nos diéramos cuenta de que UCS-2 no era suficiente, y antes de que se inventara UTF-8. Esta es la razón por la cual el soporte de Windows para UTF-8 es pobre en todos los sentidos.

Este esquema de nombres equivocado se convirtió en parte de la interfaz de usuario. Un editor de texto que use el soporte de codificación de Windows para proporcionar un rango de codificaciones describirá automática e incorrectamente UTF-16LE como "Unicode", y UTF-16BE, si está provisto, como "Unicode big-endian".

(Otros editores que codifican ellos mismos, como Notepad ++, no tienen este problema).

Si te hace sentir mejor al respecto, las cadenas ''ANSI'' tampoco se basan en ningún estándar ANSI.


Además del comentario de Trufa, Unicode explícitamente no es UTF-16. Cuando estaban buscando por primera vez en Unicode, se especuló que un número entero de 16 bits podría ser suficiente para almacenar cualquier código, pero en la práctica resultó que no era el caso. Sin embargo, UTF-16 es otra codificación válida de Unicode, junto con las variantes de 8 y 32 bits, y creo que es la codificación que Microsoft usa en la memoria en tiempo de ejecución en los sistemas operativos derivados de NT.


Aquí se muestran muchos malentendidos. Unicode no es una codificación, pero el estándar Unicode está dedicado principalmente a la codificación de todos modos.

ISO 10646 es el conjunto de caracteres internacionales que (probablemente) le interesan. Define una asignación entre un conjunto de caracteres con nombre (por ejemplo, "Letra mayúscula latina A" o "letra pequeña griega alfa") y un conjunto de puntos de código (un número asignado a cada uno, por ejemplo, hexadecimal 61 y 3 hexadecimal 3B1 para esos dos, respectivamente, para los puntos de código Unicode, la notación estándar sería U + 0061 y U + 03B1).

En un momento, Unicode definió su propio conjunto de caracteres, más o menos como competidor de ISO 10646. Era un juego de caracteres de 16 bits, pero no era UTF-16; era conocido como UCS-2. Incluía una técnica bastante controvertida para tratar de mantener al mínimo el número de caracteres necesarios (Han Unification - básicamente tratando a los caracteres chinos, japoneses y coreanos que eran bastante parecidos por ser el mismo personaje).

Desde entonces, el consorcio Unicode ha admitido tácitamente que eso no iba a funcionar, y ahora se concentra principalmente en formas de codificar el juego de caracteres ISO 10646. Los métodos principales son UTF-8, UTF-16 y UCS-4 (también conocido como UTF-32). Aquellos (excepto UTF-8) también tienen variantes LE (little endian) y BE (big-endian).

Por sí mismo, "Unicode" podría referirse a casi cualquiera de los anteriores (aunque probablemente podamos eliminar los otros que muestra explícitamente, como UTF-8). El uso no calificado de "Unicode" probablemente ocurra con mayor frecuencia en Windows, donde casi seguramente se referirá a UTF-16. Las primeras versiones de Windows NT adoptaron Unicode cuando UCS-2 era actual. Después de que UCS-2 fuera declarado obsoleto (alrededor de Win2k, si la memoria funciona), cambiaron a UTF-16, que es el más similar a UCS-2 (de hecho, es idéntico para los caracteres en el "plano multilingüe básico", que cubre mucho, incluidos todos los caracteres de la mayoría de los idiomas de Europa occidental).


Comencemos teniendo en cuenta que los datos se almacenan como bytes; Unicode es un conjunto de caracteres donde los caracteres se asignan a puntos de código (enteros únicos), y necesitamos algo para traducir estos datos de puntos de código en bytes. Ahí es donde viene UTF-8, llamada codificación, ¡simple!


Como dice Rasmus en su artículo "¿La diferencia entre UTF-8 y Unicode?" (enlace fijo):

Si se le pregunta "¿Cuál es la diferencia entre UTF-8 y Unicode?", ¿Respondería con confianza con una respuesta breve y precisa? En estos días de internacionalización, todos los desarrolladores deberían poder hacer eso. Sospecho que muchos de nosotros no comprendemos estos conceptos tan bien como deberíamos. Si crees que perteneces a este grupo, deberías leer esta breve introducción a conjuntos de caracteres y codificaciones.

En realidad, comparar UTF-8 y Unicode es como comparar manzanas y naranjas:

UTF-8 es una codificación - Unicode es un juego de caracteres

Un conjunto de caracteres es una lista de caracteres con números únicos (estos números a veces se denominan "puntos de código"). Por ejemplo, en el juego de caracteres Unicode, el número para A es 41.

Una codificación, por otro lado, es un algoritmo que traduce una lista de números a binarios para que pueda almacenarse en el disco. Por ejemplo, UTF-8 traduciría la secuencia numérica 1, 2, 3, 4 de la siguiente manera:

00000001 00000010 00000011 00000100

Nuestros datos ahora están traducidos a binario y ahora se pueden guardar en el disco.

Todos juntos ahora

Digamos que una aplicación lee lo siguiente del disco:

1101000 1100101 1101100 1101100 1101111

La aplicación sabe que estos datos representan una cadena Unicode codificada con UTF-8 y debe mostrar esto como texto al usuario. El primer paso es convertir los datos binarios en números. La aplicación usa el algoritmo UTF-8 para decodificar los datos. En este caso, el decodificador devuelve esto:

104 101 108 108 111

Como la aplicación sabe que se trata de una cadena Unicode, puede suponer que cada número representa un carácter. Usamos el juego de caracteres Unicode para traducir cada número a un personaje correspondiente. La cadena resultante es "hola".

Conclusión

Entonces, cuando alguien le pregunta "¿Cuál es la diferencia entre UTF-8 y Unicode?", Ahora puede responder con confianza breve y precisa:

UTF-8 y Unicode no se pueden comparar. UTF-8 es una codificación utilizada para traducir números en datos binarios. Unicode es un conjunto de caracteres utilizado para traducir caracteres en números.


Es raro. Unicode es un estándar, no una codificación. Como es posible especificar la endianidad, supongo que es efectivamente UTF-16 o quizás 32.

¿De dónde proviene este menú?


No es tan simple.

UTF-16 es una codificación de ancho variable de 16 bits. Simplemente llamar a algo "Unicode" es ambiguo, ya que "Unicode" se refiere a un conjunto completo de estándares para la codificación de caracteres. ¡Unicode no es una codificación!

http://en.wikipedia.org/wiki/Unicode#Unicode_Transformation_Format_and_Universal_Character_Set

y, por supuesto, el obligatorio Joel On Software - El mínimo absoluto. Cada desarrollador de software. Absolutamente, positivamente debe saber sobre Unicode y conjunto de caracteres (¡No hay excusas!) .


UTF-16 y UTF-8 son codificaciones de Unicode. Ambos son Unicode; uno no es más Unicode que el otro.

No permita que un desafortunado artefacto histórico de Microsoft lo confunda.