Tipos de codificación de caracteres

Qué es la codificación de caracteres

Cuando hablamos de codificación de caracteres en informática nos referimos al método que permite convertir un caracter de un lenguaje natural (alfabeto o silabario) en un símbolo de otro sistema de representación, por ejemplo en un número, una secuencia de pulsos eléctricos en un sistema electrónico, octetos aplicando normas o reglas de codificación. Esto con la finalidad de facilitar el almacenamiento de texto en computadoras o para facilitar la transmisión de texto a través de la redes de telecomunicaciones, un ejemplo muy simple puede ser el del código morse.

Convencionalmente juego de caracteres y codificación de caracteres eran considerados sinónimos, por eso se puede defirnir a ambos cómo charset que es un completo sistema de codificación de caracteres en una secuencia de octetos.

Tipos principales de codificación

También son llamadas normas de codificación y definen la forma en la que se codifica un carácter dado en un símbolo en otro sistema de representación, aquí sólo voy a definir los más utilizados:

ASCII

De sus siglas en inglés American Standard Code for Information Interchange (Código Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente [áski], es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una refundición o evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US-ASCII.

El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) que se usaba para detectar errores en la transmisión. A menudo se llama incorrectamente ASCII a otros códigos de caracteres de 8 bits, como el estándar ISO-8859-1 que es una extensión que utiliza 8 bits para proporcionar caracteres adicionales usados en idiomas distintos al inglés, como el español.

Casi todos los sistemas informáticos actuales utilizan el código ASCII o una extensión compatible para representar textos y para el control de dispositivos que manejan texto.

ASCII, como otros códigos de representación de caracteres, especifica una correspondencia entre cadenas de bits y símbolos escritos de la lengua, permitiendo de esta forma la comunicación entre dispositivos digitales así como su procesado y almacenamiento. El código de caracteres ASCII[1] — o una extensión compatible (ver más abajo) — se usa casi en todos los ordenadores, especialmente ordenadores personales y estaciones de trabajo. El nombre más apropiado para este código de caracteres es “US-ASCII”.[2]

! ” # $ % & ‘ ( ) * + , – . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

ASCII es, en sentido estricto, un código de siete bits, lo que significa que usa cadenas de bits representables con siete dígitos binarios (que van de 0 a 127 en base decimal) para representar información de caracteres. En el momento en el que se introdujo el código ASCII muchos ordenadores trabajaban con grupos de ocho bits (bytes u octetos), como la unidad mínima de información; donde el octavo bit se usaba habitualmente como bit de paridad con funciones de control de errores en líneas de comunicación u otras funciones específicas del dispositivo. Las máquinas que no usaban la comprobación de paridad asignaban al octavo bit el valor cero en la mayoría de los casos, aunque otros sistemas como las computadoras Prime, que ejecutaban PRIMOS ponían el octavo bit del código ASCII a uno.

El código ASCII define una relación entre caracteres específicos y secuencias de bits; además de reservar unos cuantos códigos de control para el procesador de textos, y no define ningún mecanismo para describir la estructura o la apariencia del texto en un documento; estos asuntos están especificados por otros lenguajes como los lenguajes de etiquetas.

Caracteres Imprimibles en ASCII
Binario Decimal Hexadecimal Representación
0010 0000 32 20 espacio ( )
0010 0001 33 21 !
0010 0010 34 22
0010 0011 35 23 #
0010 0100 36 24 $
0010 0101 37 25 %
0010 0110 38 26 &
0010 0111 39 27
0010 1000 40 28 (
0010 1001 41 29 )
0010 1010 42 2A *
0010 1011 43 2B +
0010 1100 44 2C ,
0010 1101 45 2D -
0010 1110 46 2E .
0010 1111 47 2F /
0011 0000 48 30 0
0011 0001 49 31 1
0011 0010 50 32 2
0011 0011 51 33 3
0011 0100 52 34 4
0011 0101 53 35 5
0011 0110 54 36 6
0011 0111 55 37 7
0011 1000 56 38 8
0011 1001 57 39 9
0011 1010 58 3A :
0011 1011 59 3B ;
0011 1100 60 3C <
0011 1101 61 3D =
0011 1110 62 3E >
0011 1111 63 3F ?
0100 0000 64 40 @
0100 0001 65 41 A
0100 0010 66 42 B
0100 0011 67 43 C
0100 0100 68 44 D
0100 0101 69 45 E
0100 0110 70 46 F
0100 0111 71 47 G
0100 1000 72 48 H
0100 1001 73 49 I
0100 1010 74 4A J
0100 1011 75 4B K
0100 1100 76 4C L
0100 1101 77 4D M
0100 1110 78 4E N
0100 1111 79 4F O
0101 0000 80 50 P
0101 0001 81 51 Q
0101 0010 82 52 R
0101 0011 83 53 S
0101 0100 84 54 T
0101 0101 85 55 U
0101 0110 86 56 V
0101 0111 87 57 W
0101 1000 88 58 X
0101 1001 89 59 Y
0101 1010 90 5A Z
0101 1011 91 5B [
0101 1100 92 5C \
0101 1101 93 5D ]
0101 1110 94 5E ^
0101 1111 95 5F _
0110 0000 96 60 `
0110 0001 97 61 a
0110 0010 98 62 b
0110 0011 99 63 c
0110 0100 100 64 d
0110 0101 101 65 e
0110 0110 102 66 f
0110 0111 103 67 g
0110 1000 104 68 h
0110 1001 105 69 i
0110 1010 106 6A j
0110 1011 107 6B k
0110 1100 108 6C l
0110 1101 109 6D m
0110 1110 110 6E n
0110 1111 111 6F o
0111 0000 112 70 p
0111 0001 113 71 q
0111 0010 114 72 r
0111 0011 115 73 s
0111 0100 116 74 t
0111 0101 117 75 u
0111 0110 118 76 v
0111 0111 119 77 w
0111 1000 120 78 x
0111 1001 121 79 y
0111 1010 122 7A z
0111 1011 123 7B {
0111 1100 124 7C |
0111 1101 125 7D }
0111 1110 126 7E ~

ASCII Extendido

Se denomina ASCII extendido a cualquier juego de caracteres de 8 bits en el cual los códigos 32 a 126 (0x20 a 0x7E) coinciden con los caracteres imprimibles de ASCII, así como los caracteres comúnmente llamados “de espacio”, estos son los códigos de control de 8 a 13 (0x08 a 0x0D), ambos inclusive.

Las codificaciones de ASCII extendido utilizan además parte o la totalidad de los códigos superiores a 128 para codificar caracteres adicionales a los caracteres imprimibles ASCII.

Codificaciones “ASCII extendido” más comunes:

  • Página de códigos 437 (usual en las versiones en inglés del IBM PC y MS-DOS)
  • Página de códigos 850 (usual en las versiones de Europa occidental del IBM PC y MS-DOS)
  • Latin-1 (ISO-8859-1) (típico de Unix y, con modificaciones, en Microsoft Windows y Macintosh)

Unicode

Unicode es un estándar industrial cuyo objetivo es proporcionar el medio por el cual un texto en cualquier forma e idioma pueda ser codificado para el uso informático.

El establecimiento de Unicode ha involucrado un ambicioso proyecto para reemplazar los esquemas de codificación de caracteres existentes, muchos de los cuales están muy limitados en tamaño y son incompatibles con entornos multilingües. Unicode se ha vuelto el más extenso y completo esquema de codificación de caracteres, siendo el más dominante en la internacionalización y adaptación local del software informático. El estándar ha sido implementado en un número considerable de tecnologías recientes, que incluyen XML, Java y sistemas operativos modernos.

Unicode cubre la mayor parte de las escrituras usadas actualmente, incluyendo: Árabe, Armenio, Bengalí, Birmano, Braille, Sílabas aborígenes canadienses, Cheroqui, Copto, Cirílico, Devanāgarī, Esperanto, Ge’ez, Georgiano, Griego, Guyaratí, Gurmukhi, Hangul (Coreano), Han (Kanji, Hanja y Hanzi), Japonés (Kanji, Hiragana y Katakana), Hebreo, Jémer (Camboyano), Kannada (Canarés), Lao, Latino, Malayalam, Mongol, Oriya, Syriac, Tailandés (Thai), Tamil, Tibetano, Yi, Zhuyin (Bopomofo)

Unicode ha ido añadiendo escrituras y cubrirá aún más, incluyendo escrituras históricas menos utilizadas, incluso aquellas extinguidas para propósitos académicos: Cuneiforme, Griego antiguo, Lineal B, Fenicio, Rúnico, Sumerio, Ugarítico.

Por el momento Unicode solamente ha sido mostrado como una manera de asignar un código único a cada carácter utilizado en los lenguajes escritos del mundo. El almacenamiento de esos números en el procesamiento de textos es otro tema; los problemas surgen del hecho que mucho del software escrito puede manejar solamente codificación de caracteres de 8 bits, con respaldo a Unicode agregado recientemente de forma lenta. De manera similar en cuanto a la representación de caracteres de Asia, los caracteres de doble byte no pueden codificar más que 65.536 caracteres, y en la practica las arquitecturas elegidas imponen límites muy pequeños. Tales límites no son suficientes ni siquiera para las necesidades escolares del lenguaje Chino.

La lógica interna de la mayoría del software de 8 bits permite de forma típica solamente 8 bits para cada carácter, haciendo imposible utilizar más de 256 puntos en código sin procesamiento especial. El software de 16 bits solamente puede guardar poco más de 6 decenas de miles de caracteres. Unicode, por otro lado ha definido más de 90.000 caracteres codificados. Los diseñadores de los sistemas entonces han tenido que sugerir muchos métodos y mecanismos para implementar Unicode; el método implementado depende del espacio de almacenamiento disponible, la compatibilidad de los códigos fuentes y la inter-operatividad con otros sistemas.

Unicode define dos métodos de “mapeo” o de localización de caracteres:

  • La codificación UTF (Unicode Transformation Format) Formato de Transformación Unicode.
  • La codificación UCS (Universal Character Set) Juego de Caracteres Universal.

Las codificaciones incluyen:

  • UTF-7 — una codificación relativamente poco popular de 7 bits, a menudo considerada obsoleta.
  • UTF-8 — una codificacón de 8 bits de longitud variable
  • UCS-2 — una codificación de 16 bits de longitud fija que solamente permite el “mapeo” o la búsqueda en la Plana Básica Multilengüe.
  • UTF-16 — una codificación de 16 bits de longitud variable.
  • UCS-4 y UTF-32 — un par de codificaciones de 32 bits de longitud fija que son funcionalmente idénticas.
  • UTF-EBCDIC — una codificación poco difundida creada para sistemas basados en EBCDIC.

Los números en los nombres de los códigos indican la cantidad de bits de cada carácter (para las codificaciones UTF) o el número de bytes por carácter (para las UCS).

A continuación se describen en el mismo orden algunos detalles sobre cada tipo de codificacón:

UTF-8 utiliza de uno hasta 4 bytes por cada punto de código y, siendo relativamente compacto (para la escritura basada en caracteres latinos) y compatible con ASCII. Proporciona la codificación estándar para el intercambio de texto en Unicode. También es utilizado por las más recientes versiones de Linux como reemplazo a la herencia de códigos en el manejo de textos en general.

Las codificaciones UCS-2 y UTF-16 especifican la BOM o la Marca de Orden de Byte especifica el Unicode para usarlo al principio de los archivos de texto. Algunos desarrolladores de software lo han adoptado para otras codificaciones, incluyendo UTF-8, la cual no necesita una indicación de orden de byte. En este caso intenta marcar el archivo indicando que contiene texto Unicode. El punto código de la BOM, U+FEFF tiene la importante propiedad de la inambigüedad, sin importar la codificación Unicode utilizada. Las unidades FE y FF nunca aparecen en UTF-8; U+FFFE (el resultado del intercambio the U+FEFF) no es igual a un carácter válido, y U+FEFF transporta la longitud-cero o espacio sin roptura (un carácter sin apariencia y sin otro efecto más que prevenir la formación de ligaduras). El mismo carácter convertido a UTF-8 se convierte en la siguiente secuencia de bytes EF BB BF.

En los códigos UTF-32 y UCS-4, un código de 32 bits funciona como una representación directa y confiable de cualquier punto de código de un carácter (aunque la endianness, que varia dependiendo de la arquitectura del procesador de cada computadora, afecta como se manifiesta el valor del código en su secuencia de bits). Aunque en otros casos, cada código puede ser representado por un código de valores de números variables.

UTF-16, mientras tanto, la cual normalmente asigna 16 bits por cada punto de código (la misma que UCS-2) aunque a veces asigna 32, es utilizada por muchas APIs (Interfaz de Programación de Aplicaciones por sus siglas en inglés). Mayormente por razones históricas que datan desde los días en que Unicode estaba basado en UCS-2 o era una interfaz con otras APIs que usaban UTF-16 . UTF-16 es el formato estándar para la API de Windows (aunque el soporte para sustitutos no está habilitado por omisión), para la de Java y la de ambientes .NET bytecode.

UCS-4 y UTF-32 no son comúnmente utilizados, ya que no más de 21 de los 32 bits asignados a cada punto de código serán alguna ves utilizados, lo que si se está volviendo común es la implementación del código UCS-4 en la programación para el almacenamiento interno del texto codificado.

GB18030 es otra forma de codificación para el Unicode, pero proveniente de la Administración para la Estandarización de China.

Otras codificaciones de caracteres populares

  • ISO 646
    • ASCII
  • EBCDIC
  • ISO 8859:
    • ISO 8859-1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO 8859-9, ISO 8859-10, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16
    • CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869
  • Juegos de caracteres de MS-Windows:
    • Windows-1250 para idiomas de europa central que utilizan el alfabeto latino, (polaco, checo, eslovaco, húngaro, eslovenio, croata, rumano y albanés)
    • Windows-1251 para alfabetos cirílicos
    • Windows-1252 para idiomas occidentales
    • Windows-1253 para griego
    • Windows-1254 para turco
    • Windows-1255 para hebreo
    • Windows-1256 para árabe
    • Windows-1257 para idomas bálticos
    • Windows-1258 para vietnamita
  • Mac OS Romano
  • KOI8-R, KOI8-U, KOI7
  • MIK
  • Cork o T1
  • ISCII
  • VISCII
  • Big5 (variante de Microsoft Code página 950)
    • HKSCS
  • Guobiao
    • GB2312
    • GBK (Microsoft Code página 936)
    • GB18030
  • Shift JIS para japonés (Microsoft Code página 932)
  • EUC-KR para coreano (Microsoft Code página 949)
  • ISO-2022 y EUC para juegos de caracteres CJK
  • Unicode (incluyendo los subjuegos 16-bit)
  • ANSEL o ISO/IEC 6937

Fuentes:

La mayoría de los texto fueron resumenes, traducciones o extracciones de la wikipedia en inglés y español http://wikipedia.org

Escríbe un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

18 comentarios en “Tipos de codificación de caracteres”

  1. ESTIMADOS SRES
    LOS FELICITO POR LA SERIEDAD DEL BLOG ES MUY BUENO PERO LES RUEGO
    SI PUDIESEN ENVIARME EL SILABARIO BOPOMFO COMPLETO PARA IMPRIMIR CON LOS SONIDOS GABADOS POR UN CHINO NATIVO O PROFESOR DEL IDIOMA YA QUE DESO TENERLOS PUES SOY ARGENTINO ESTUDIE UN AÑO DE HANYU PINYIN BIAO Y DESEORETOAR EL ESUDIODEL MISMO POR ELLO NO ESTA DE MAS CONOCER LOS CARACTERES BOMOFO
    ASI MISMO LES PEDIRIA LO MISMO PARA EL IDIOMA VIETNAMITA JAPONES Y TAGALOQ (FILIPINO)
    GRACIAS ESPERO RESPUESTAS EN MI MAIL
    GUSTAVO
    SANTA FE
    ARGENTIA

  2. hol esta muy buena la informacion pero no puedo encontra loque yo quiero.es cuales son los metodos de codificacion que utilizan los celulares.me podria dar una repuesta.muchas gracias.

  3. ola amigos oty usando linux y descarge GunzHeroGamers
    Y ME DISE ESTO No se ha podido abrir el archivo «/home/vit/Desktop/HeroGamersGunZ-31012011.exe» usando la codificación de caracteres Unicode (UTF-8). Compruebe que no está intentando abrir un archivo binario.
    Seleccione una codificación de caracteres diferente desde el menú e pruebe de nuevo. que codificacion de caracter debo usar me ayudan estare pendiente todos los dias master me ayudaiss!

  4. y cuando le doy clic me dise esto No se puede abrir HeroGamersGunZ-31012011.exe El nombre de archivo «HeroGamersGunZ-31012011.exe» indica que este archivo es del tipo «ejecutable de DOS/Windows». El contenido del archivo indica que es del tipo «documento de texto sencillo». Si abre este archivo, éste podría representar un riesgo de seguridad para su sistema.

    No abra el archivo al menos que usted mismo lo haya creado, o lo haya recibido desde una fuente confiable. Para abrir el archivo, renómbrelo con la extensión correcta para «documento de texto sencillo», luego abra el archivo normalmente. Alternativamente, utilice la opción «Abrir con» del menú para seleccionar una aplicación específica para el archivo.

    que ago quien me ayuuuda!

  5. Muy buen aporte sobre todo explica muy bien el por que de los distintos aunq existen mas pero esto es un origen, muchas cosas no entendi pero me parese muy bueno, gracias sobre todo por que queria ver la diferencia del utf-8 y utf-16

  6. Hmm it seems like your site ate my first comment (it was super
    long) so I guess I’ll just sum it up what I wrote and say, I’m thoroughly enjoying your
    blog. I as well am an aspiring blog writer but I’m still new to the whole thing. Do you have any suggestions for rookie blog writers? I’d genuinely
    appreciate it.

  7. Place a silpat liner on a baking sheet (or spray with nonstick cooking spray).
    Remember to pre-heat your oven for at least 1 hour. Lay the dough on the tray
    or baking sheet, then dimple the dough until it’s a thick, flattened circle.

  8. Howdy! I know this is somewhat off-topic but I needed to ask.
    Does managing a well-established website such as yours require a large
    amount of work? I am completely new to writing a blog but I do
    write in my journal every day. I’d like to start a blog so I can share my own experience and feelings online. Please let me know if you have any kind of ideas or tips for brand new aspiring blog owners. Thankyou!

  9. I do not know if it’s just me or if everybody else experiencing problems with your site. It looks like some of the written text in your posts are running off the screen. Can somebody else please provide feedback and let me know if this is happening to them as well? This might be a problem with my browser because I’ve
    had this happen previously. Many thanks

  10. al abrir un archivo en blog de notas aparecen estos caracteres: ƒeƒŒƒpƒXETV!
    ìŽŒEXƒ†ƒL@ì‹ÈE•Ò‹ÈEâ–{—T‰î
    ƒ{[ƒJƒ‹Eƒ~ƒ“ƒgƒuƒ‰ƒ}ƒ“ƒVƒ…y‘òé‚Ý‚ä‚«z
    supuestamente es un archivo que me enviaron desde japon…..por que sale asi? como lo puedo pasar a caracteres japoneses. o a romaji? gracias.