2010-03-18 24 views
9

¿Cuál es la diferencia entre los conjuntos de caracteres y la codificación de caracteres? Cuando digo que estoy usando codificación utf-8, ¿cuál será mi juego de caracteres? ¿Toma unicode como juego de caracteres por defecto?Cuál es la diferencia entre los conjuntos de caracteres y la codificación de caracteres

+0

Posible duplicado de [¿Cuál es la diferencia entre la codificación y el juego de caracteres?] (Https://stackoverflow.com/questions/2281646/whats-the-difference-between-encoding-and-charset) –

Respuesta

0

Un conjunto de caracteres define la correspondencia entre los números y caracteres. Casi todos los conjuntos de char decir 65 es A, y está de acuerdo en general acerca de las asignaciones de los números hasta el 127. Sin embargo, puede ser que tengan diferentes stands cuando se trata de los números por encima de 127.

Hay un montón de juegos de caracteres

  • EBCDIC
  • de caracteres de doble byte set
  • ANSI
  • diferente carbón OEM establece
  • Unicode, un esfuerzo por crear un único juego de caracteres que incluye cada razonables sys escritura tem en el planeta y algunos fantasiosos como Klingon, también.

Cuando dice la codificación de caracteres, está hablando de cómo se almacena internamente un punto de código Unicode (un carácter).

  • En la codificación UTF-8, cada punto de código de 0-127 se almacena en un solo byte. Solo los puntos de código 128 y superiores se almacenan usando 2, 3, de hecho, hasta 6 bytes.
  • Hay algo llamado UTF-7, que se parece mucho a UTF-8, pero garantiza que el bit siempre será cero
  • Hay cientos de codificaciones tradicionales que sólo puede almacenar algunos puntos de código correcta y cambiar todos los demás codificar puntos en signos de interrogación. Algunas codificaciones populares de texto en inglés son Windows-1252 (el estándar de Windows 9x para los idiomas de Europa occidental) e ISO-8859-1, también conocido como Latin-1 (también es útil para cualquier idioma de Europa occidental).
  • UTF 7, 8, 16 y 32 tienen todas la propiedad agradable de poder almacenar cualquier punto de código correctamente.

Este post se basa casi por completo en el poste de Joel Spolsky en Unicode: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets. Léelo para tener una mejor idea.

3
conjunto

Carácter: definición que la que tiene carácter numérico punto de código (ascii, JIS, Unicode)

Codificación: definición de cómo se representa físicamente el punto de código numérico (UTF, UCS, ShiftJIS)

4

UTF 8 es una codificación del juego de caracteres Unicode. Por lo tanto, si está utilizando UTF-8, el juego de caracteres es Unicode, pero no es probable que deba especificarlo por separado en ningún lado. La otra codificación principal de Unicode es UTF-16, que no se almacena en bytes de 8 bits porque contiene cero bytes.Si se trata de Unicode en una secuencia de bytes, ciertamente está codificado como UTF-8.

Aparte de Unicode, normalmente se considera que los juegos de caracteres tienen una sola codificación fija, y los términos como juego de caracteres, juego de caracteres, página de códigos, codificación a menudo se usan indistintamente o según el proveedor. Esto es descuidado pero no crea problemas de tiempo de ejecución.

Las únicas posibles excepciones que puedo pensar son del este asiático: JIS y EUC originalmente definieron codificaciones múltiples para el mismo conjunto de caracteres, pero en la práctica actual, cada codificación solo se trata por separado.

+1

Hay más excepciones que eso: IBM037 e IBM500 tienen exactamente el mismo repertorio de caracteres que ISO-8859-1, en un orden completamente diferente. – dan04

+0

Perdón por perder eso, EBCDIC es un universo completamente diferente en el que raramente pienso. Al menos si confunde un EBCDIC con una codificación basada en ASCII, obtendrá basura incluso con texto en inglés, y tendrá que arreglarlo inmediatamente en lugar de dejarlo como una bomba de tiempo para los usuarios extranjeros y los desarrolladores i18n. –

2

Según Unicode terminology

  • ACR: Abstract repertorio de caracteres = el conjunto de caracteres a codificar, por ejemplo, algún alfabeto o símbolo conjunto
  • CCS: Coded juego de caracteres = un mapeo de una Repertorio de caracteres abstractos a un conjunto de enteros no negativos
  • CEF: Formulario de codificación de caracteres = una asignación de un conjunto de enteros no negativos que son elementos de un CCS a un conjunto de secuencias de par unidades de código cular de algunos ancho especificado, tales como enteros de 32 bits
  • CES: Carácter Esquema de codificación = una transformación reversible desde un conjunto de secuencias de unidades de código (de uno o más CEFs a una secuencia en serie de bytes)
  • CM: Mapa de caracteres = un mapeo a partir de secuencias de los miembros de un repertorio carácter abstracto a secuencias serializados de bytes de puente los cuatro niveles en una sola operación
  • TES: codificación de transferencia sintaxis = transformar una reversible de datos codificados, que puede o no puede contener datos textuales

Los protocolos más antiguos como MIME usan "charset" cuando realmente quieren decir "esquema de codificación de caracteres". Originalmente, las diferentes codificaciones de caracteres se consideraban repertorios de caracteres independientes en lugar de subconjuntos de Unicode.

Cuestiones relacionadas