====== Codificación de caracteres ====== La codificación de caracteres es el método que permite convertir un carácter de un lenguaje natural en un símbolo de otro sistema de representación, como un número o una secuencia de pulsos eléctricos en un sistema electrónico, aplicando normas o reglas de codificación. Por ejemplo: Código morse {{:morse_sos.png?100|}} {{youtube>0Ndt0TA19bQ?large}} ===== ¿Por qué es necesario codificar caracteres? ===== No siempre el medio de almacenamiento o de transmisión permite que la información se envíe o guarde tal cual es, esto nos obliga a tener que adaptar la información al medio. En el caso de las computadoras sólo entienden números por lo que buscamos representar los caracteres como números. Ejemplos: EBCDIC, ASCII, UTF-8, UTF-16, UTF-32, entre otros. ===== Tipos de codificación ===== ==== Código 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. Tipos de caracteres: * Caracteres de control * Caracteres imprimibles {{:ascii.png?800|}} ==== Código Extendido ==== A medida que la tecnología informática se difundió a lo largo del mundo, se desarrollaron diferentes estándares y las empresas desarrollaron variaciones del código ASCII para facilitar la escritura de lenguas diferentes al inglés. Así surge el código ASCII extendido que utiliza 8 bits para poder representar más caracteres. {{:ascii_ext.png?800|}} ==== Unicode ==== Fue diseñado poder representar textos de numerosos idiomas y reemplazar los esquemas de codificación de caracteres ya existentes, por las limitaciones de tamaño que estos tenían. Define tres formas de codificación bajo el nombre UTF (Unicode transformation format): UTF-8, UTF-16 y UTF-32 {{:utf_compare.png?400|}} === UTF-8 === {{:utf8.png?800|}} Ventajas: * Permite codificar cualquier carácter Unicode. * Es compatible con US-ASCII, la codificación del repertorio de 7 bits es directa. * UTF-8 ahorrará espacio de almacenamiento para caracteres comunes Desventajas: * Utiliza símbolos de longitud variable; eso significa que diferentes caracteres pueden codificarse con distinto número de bytes. * Los caracteres ideográficos usan 3 bytes en UTF-8, pero sólo 2 en UTF-16. Así, los textos chinos, japoneses o coreanos ocupan más espacio cuando se representan en UTF-8 * UTF-8 ofrece peor rendimiento que UTF-16 y UTF-32 en cuanto a coste de computación,​ por ejemplo en operaciones de ordenación. ==== Comparación ==== {{:tabla_comparativa.png?800|}} UTF-8 optimiza el uso del espacio sacrificando el rendimiento del procesador ya que debe trabajar mas para determinar la longitud de cada símbolo. UTF-32 optimiza el rendimiento del procesador sacrificando el uso del espacio en memoria/disco. {{::tabla_comparativa2.png?800|}} ===== Representación de una cadena en memoria ===== Existen dos formas de representar una cadena en memoría: {{:formas_de_representar_cadenas.png?800|}} ---- ===== Diferentes tipos de saltos de linea CRLF (\r\n) VS LF (\n) ===== {{youtube>4i1MqlpIzIk?large}} [[sistemas_de_numeracion|Volver]] ~~NOCACHE~~ ({{counter|total}}) ---- --- //[[fvelcic@gmail.com|Fernando Velcic]]//