caracteres de control ascii. Codificación ASCII (código estándar americano para el intercambio de información): codificación de texto básica para el alfabeto latino

Según la Unión Internacional de Telecomunicaciones, en 2016, tres mil quinientos millones de personas utilizaron Internet con cierta regularidad. La mayoría de ellos ni siquiera piensan en el hecho de que los mensajes que envían a través de una PC o dispositivos móviles, así como los textos que se muestran en todo tipo de monitores, son en realidad combinaciones de 0 y 1. Esta representación de información se llama codificación. . Asegura y facilita enormemente su almacenamiento, procesamiento y transmisión. En 1963, se desarrolló la codificación estadounidense ASCII, que es el tema de este artículo.

Presentar información en una computadora.

Desde el punto de vista de cualquier computadora electrónica, el texto es un conjunto de caracteres individuales. Estos incluyen no solo letras, incluidas las mayúsculas, sino también signos de puntuación y números. Además, se utilizan caracteres especiales “=”, “&”, “(” y espacios.

El conjunto de caracteres que componen el texto se llama alfabeto y su número se llama cardinalidad (denotado como N). Para determinarlo se utiliza la expresión N = 2^b, donde b es el número de bits o el peso de la información de un símbolo en particular.

Se ha demostrado que un alfabeto con una capacidad de 256 caracteres puede representar todos los caracteres necesarios.

Dado que 256 representa la octava potencia de dos, el peso de cada carácter es de 8 bits.

Una unidad de medida de 8 bits se llama 1 byte, por lo que se acostumbra decir que cualquier carácter de texto almacenado en una computadora ocupa un byte de memoria.

¿Cómo se hace la codificación?

Cualquier texto se ingresa en la memoria de una computadora personal utilizando las teclas del teclado en las que se escriben números, letras, signos de puntuación y otros símbolos. Se transfieren a la RAM en código binario, es decir, cada carácter está asociado con un código decimal familiar para los humanos, de 0 a 255, que corresponde a un código binario, de 00000000 a 11111111.

La codificación de caracteres byte-byte permite al procesador que realiza el procesamiento de texto acceder a cada carácter individualmente. Al mismo tiempo, 256 caracteres son suficientes para representar cualquier información simbólica.

Codificación de caracteres ASCII

Esta abreviatura en inglés significa código para intercambio de información.

Incluso en los albores de la informatización, se hizo evidente que era posible idear una amplia variedad de formas de codificar la información. Sin embargo, para transferir información de una computadora a otra, fue necesario desarrollar un estándar unificado. Entonces, en 1963, apareció la tabla de codificación ASCII en los EE. UU. En él, cualquier símbolo del alfabeto informático está asociado a su número de serie en representación binaria. ASCII se utilizó originalmente sólo en los Estados Unidos y luego se convirtió en un estándar internacional para PC.

Los códigos ASCII se dividen en 2 partes. Sólo la primera mitad de esta tabla se considera el estándar internacional. Incluye caracteres con números de serie del 0 (codificado como 00000000) al 127 (codificado 01111111).

Número de serie

Codificación de texto ASCII

Símbolo

0000 0000 - 0001 1111

Los caracteres con N de 0 a 31 se denominan caracteres de control. Su función es "gestionar" el proceso de visualización de texto en un monitor o dispositivo de impresión, emitiendo una señal sonora, etc.

0010 0000 - 0111 1111

Caracteres de N del 32 al 127 (parte estándar de la tabla): letras mayúsculas y minúsculas del alfabeto latino, décimos dígitos, signos de puntuación, así como varios corchetes, símbolos comerciales y otros. El carácter 32 representa un espacio.

1000 0000 - 1111 1111

Los caracteres con N del 128 al 255 (parte alternativa de la tabla o página de códigos) pueden tener diferentes variantes, cada una de las cuales tiene su propio número. La página de códigos se utiliza para especificar alfabetos nacionales que son diferentes del latín. En particular, es con su ayuda que se realiza la codificación ASCII de caracteres rusos.

En la tabla, las codificaciones están en mayúscula y se suceden en orden alfabético, y los números están en orden ascendente. Este principio sigue siendo el mismo para el alfabeto ruso.

personajes de control

La tabla de codificación ASCII se creó originalmente para recibir y transmitir información a través de un dispositivo que no se ha utilizado durante mucho tiempo, como un teletipo. En este sentido, se incluyeron caracteres no imprimibles en el conjunto de caracteres, utilizados como comandos para controlar este dispositivo. Se utilizaron comandos similares en métodos de mensajería anteriores a la computadora, como el código Morse, etc.

El carácter de teletipo más común es NUL (00). Todavía se utiliza hoy en día en la mayoría de los lenguajes de programación para indicar el final de una línea.

¿Dónde se utiliza la codificación ASCII?

El Código Estándar Americano es necesario no solo para ingresar información de texto en el teclado. También se utiliza en gráficos. En particular, en ASCII Art Maker, las imágenes de las distintas extensiones representan un espectro de caracteres ASCII.

Hay dos tipos de productos de este tipo: los que realizan la función de editores gráficos al convertir imágenes en texto y los que convierten "dibujos" en gráficos ASCII. Por ejemplo, el famoso emoticón es un excelente ejemplo de símbolo codificado.

ASCII también se puede utilizar al crear un documento HTML. En este caso, puede ingresar un determinado conjunto de caracteres y, al visualizar la página, aparecerá en la pantalla un símbolo que corresponde a este código.

ASCII también es necesario para crear sitios web multilingües, ya que los caracteres que no están incluidos en una tabla nacional específica se reemplazan por códigos ASCII.

Algunas caracteristicas

ASCII se usó originalmente para codificar información de texto usando 7 bits (uno se dejó en blanco), pero hoy funciona como 8 bits.

Las letras ubicadas en las columnas ubicadas arriba y abajo se diferencian entre sí en un solo bit. Esto reduce significativamente la complejidad de la auditoría.

Usando ASCII en Microsoft Office

Si es necesario, este tipo de codificación de información de texto se puede utilizar en editores de texto de Microsoft como el Bloc de notas y Office Word. Sin embargo, es posible que no pueda utilizar algunas funciones al escribir en este caso. Por ejemplo, no podrás utilizar texto en negrita porque la codificación ASCII sólo conserva el significado de la información, ignorando su apariencia y forma generales.

Estandarización

La organización ISO ha adoptado los estándares ISO 8859. Este grupo define codificaciones de ocho bits para diferentes grupos de idiomas. Específicamente, ISO 8859-1 es una tabla ASCII extendida para los Estados Unidos y los países de Europa occidental. E ISO 8859-5 es una tabla utilizada para el alfabeto cirílico, incluido el idioma ruso.

Por diversas razones históricas, la norma ISO 8859-5 se utilizó durante muy poco tiempo.

Para el idioma ruso, actualmente se utilizan las siguientes codificaciones:

  • CP866 (página de códigos 866) o DOS, que a menudo se denomina codificación GOST alternativa. Se utilizó activamente hasta mediados de los años 90 del siglo pasado. Actualmente prácticamente no se utiliza.
  • KOI-8. La codificación se desarrolló en las décadas de 1970 y 1980 y actualmente es el estándar generalmente aceptado para mensajes de correo electrónico en RuNet. Es ampliamente utilizado en sistemas operativos Unix, incluido Linux. La versión "rusa" del KOI-8 se llama KOI-8R. Además, existen versiones para otros idiomas cirílicos, como el ucraniano.
  • Página de códigos 1251 (CP 1251, Windows - 1251). Desarrollado por Microsoft para brindar soporte para el idioma ruso en el entorno Windows.

La principal ventaja del primer estándar CP866 fue la preservación de los caracteres pseudográficos en las mismas posiciones que en ASCII extendido. Esto hizo posible ejecutar programas de texto fabricados en el extranjero, como el famoso Norton Commander, sin modificaciones. Actualmente, CP866 se utiliza para programas desarrollados para Windows que se ejecutan en modo de texto de pantalla completa o en ventanas de texto, incluido FAR Manager.

Los textos informáticos escritos en codificación CP866 son bastante raros hoy en día, pero es el que se utiliza para los nombres de archivos en ruso en Windows.

"Unicode"

Actualmente, esta codificación es la más utilizada. Los códigos Unicode se dividen en áreas. El primero (U+0000 a U+007F) incluye caracteres ASCII con códigos. A esto le siguen las áreas de caracteres de diversas escrituras nacionales, así como los signos de puntuación y los símbolos técnicos. Además, algunos códigos Unicode están reservados en caso de que sea necesario incluir nuevos caracteres en el futuro.

Ahora ya sabes que en ASCII, cada carácter se representa como una combinación de 8 ceros y unos. Para los no especialistas, esta información puede parecer innecesaria y poco interesante, pero ¿no quieres saber qué está pasando “en el cerebro” de tu PC?

Superposición de personajes

El carácter BS (retroceso) permite a la impresora imprimir un carácter encima de otro. ASCII permitía agregar signos diacríticos a las letras de esta manera, por ejemplo:

  • a BS "→á
  • a BS ` → à
  • una BS ^ → â
  • o BS / → ø
  • c BS , → ç
  • norte BS ~ → с

Nota: en fuentes antiguas, el apóstrofo " estaba dibujado inclinado hacia la izquierda y la tilde ~ estaba desplazada hacia arriba, por lo que encajaban en el papel de un agudo y una tilde en la parte superior.

Si se superpone el mismo carácter a un carácter, el resultado es un efecto de fuente en negrita, y si se superpone un subrayado a un carácter, el resultado es un texto subrayado.

  • una licenciatura en → a
  • abs_→ a

Nota: Esto se utiliza, por ejemplo, en el sistema de ayuda del hombre.

Variantes nacionales de ASCII

La norma ISO 646 (ECMA-6) prevé la posibilidad de colocar símbolos nacionales @ [ \ ] ^ ` { | } ~ . Además de esto, en el sitio # se puede publicar £ , y en su lugar $ - ¤ . Este sistema es muy adecuado para idiomas europeos donde sólo se necesitan unos pocos caracteres adicionales. La versión de ASCII sin caracteres nacionales se llama US-ASCII o "Versión de referencia internacional".

Posteriormente, resultó más conveniente utilizar codificaciones de 8 bits (páginas de códigos), donde la mitad inferior de la tabla de códigos (0-127) está ocupada por caracteres US-ASCII y la mitad superior (128-255) por personajes adicionales, incluido un conjunto de personajes nacionales. Por lo tanto, la mitad superior de la tabla ASCII, antes de la adopción generalizada de Unicode, se usaba activamente para representar caracteres localizados, letras del idioma local. La falta de un estándar unificado para colocar caracteres cirílicos en la tabla ASCII causó muchos problemas con las codificaciones (KOI-8, Windows-1251 y otras). Otros idiomas con escrituras no latinas también sufrían de tener varias codificaciones diferentes.

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .MI .F
0. NUL SOM AEO MOE EQT WRU RU CAMPANA BKSP HT LF Vermont FF CR ENTONCES SI.
1. CD 0 CC 1 CC 2 CC 3 CC 4 ERRAR SINCRONIZACIÓN L.E.M. S 0 S 1 S 2 S 3 S 4 T 5 T 6 T 7
2.
3.
4. BLANCO ! " # $ % & " ( ) * + , - . /
5. 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
6.
7.
8.
9.
A. @ A B C D mi F GRAMO h I j k l METRO norte oh
B. PAG q R S t Ud. V W. X Y z [ \ ]
C.
D.
MI. a b C d mi F gramo h i j k yo metro norte oh
F. pag q r s t tu v w X y z ESC DEL

En aquellas computadoras donde la unidad mínima de memoria direccionable era una palabra de 36 bits, inicialmente se utilizaron caracteres de 6 bits (1 palabra = 6 caracteres). Después de la transición a ASCII, dichas computadoras comenzaron a contener 5 caracteres de siete bits (quedaba 1 bit extra) o 4 caracteres de nueve bits en una palabra.

Los códigos ASCII también se utilizan para determinar qué tecla se presiona durante la programación. Para un teclado QWERTY estándar, la tabla de códigos tiene este aspecto:

Hola, queridos lectores del blog. Hoy hablaremos con usted sobre de dónde provienen los krakozyabrs en un sitio web y en los programas, qué codificaciones de texto existen y cuáles deben usarse. Echemos un vistazo más de cerca a la historia de su desarrollo, comenzando desde ASCII básico, así como sus versiones extendidas CP866, KOI8-R, Windows 1251 y terminando con las modernas codificaciones Unicode Consortium UTF 16 y 8.

Para algunos, esta información puede parecer innecesaria, pero ¿saben cuántas preguntas recibo específicamente sobre los krakozyabrs (conjunto de caracteres ilegibles) que se arrastran? Ahora tendré la oportunidad de remitir a todos al texto de este artículo y encontrar mis propios errores. Bueno, prepárate para absorber la información e intenta seguir el flujo de la historia.

ASCII: codificación de texto básica para el alfabeto latino

El desarrollo de las codificaciones de texto se produjo simultáneamente con la formación de la industria de TI, y durante este tiempo lograron sufrir muchos cambios. Históricamente, todo comenzó con EBCDIC, que era bastante disonante en la pronunciación rusa, lo que permitía codificar letras del alfabeto latino, números arábigos y signos de puntuación con caracteres de control.

Pero aún así, el punto de partida para el desarrollo de codificaciones de texto modernas debe considerarse el famoso ASCII(Código estándar americano para el intercambio de información, que en ruso suele pronunciarse como “aski”). Describe los primeros 128 caracteres más utilizados por los usuarios de habla inglesa: letras latinas, números arábigos y signos de puntuación.

Estos 128 caracteres descritos en ASCII también incluían algunos caracteres de servicio como corchetes, marcas de almohadilla, asteriscos, etc. De hecho, puedes verlos tú mismo:

Son estos 128 caracteres de la versión original de ASCII los que se han convertido en el estándar, y en cualquier otra codificación seguramente los encontrará y aparecerán en este orden.

Pero el hecho es que con un byte de información se pueden codificar no 128, sino hasta 256 valores diferentes (dos elevado a ocho es igual a 256), por lo que después de la versión básica de Asuka toda una serie de codificaciones ASCII extendidas, en el que, además de 128 caracteres básicos, también era posible codificar símbolos de la codificación nacional (por ejemplo, ruso).

Aquí probablemente valga la pena decir un poco más sobre los sistemas numéricos que se utilizan en la descripción. En primer lugar, como todos sabéis, un ordenador sólo funciona con números del sistema binario, es decir, ceros y unos (“álgebra booleana”, si alguien la estudió en un instituto o escuela). , cada uno de los cuales es un dos elevado a la potencia, comenzando desde cero, y hasta dos elevado a la séptima:

No es difícil entender que todas las combinaciones posibles de ceros y unos en un diseño de este tipo solo pueden ser 256. Convertir un número del sistema binario al sistema decimal es bastante simple. Sólo necesitas sumar todas las potencias de dos con las que están por encima de ellas.

En nuestro ejemplo, esto resulta ser 1 (2 elevado a cero) más 8 (dos elevado a 3), más 32 (dos elevado a la quinta), más 64 (a la sexta potencia), más 128 (a la séptima potencia). El total es 233 en notación decimal. Como puedes ver, todo es muy sencillo.

Pero si miras de cerca la tabla con caracteres ASCII, verás que están representados en codificación hexadecimal. Por ejemplo, "asterisco" corresponde al número hexadecimal 2A en Aski. Probablemente sepas que en el sistema numérico hexadecimal, además de los números arábigos, también se utilizan letras latinas desde la A (significa diez) hasta la F (significa quince).

Pues bien, para convertir un número binario a hexadecimal recurra al siguiente método simple y obvio. Cada byte de información se divide en dos partes de cuatro bits, como se muestra en la captura de pantalla anterior. Eso. En cada medio byte, sólo se pueden codificar dieciséis valores (dos a la cuarta potencia) en binario, lo que se puede representar fácilmente como un número hexadecimal.

Además, en la mitad izquierda del byte, los grados deberán contarse nuevamente comenzando desde cero, y no como se muestra en la captura de pantalla. Como resultado, mediante cálculos simples, obtenemos que el número E9 está codificado en la captura de pantalla. Espero que el curso de mi razonamiento y la solución a este enigma te hayan quedado claros. Bueno, ahora sigamos, de hecho, hablando de codificaciones de texto.

Versiones extendidas de Asuka: codificaciones CP866 y KOI8-R con pseudografía

Entonces, comenzamos a hablar de ASCII, que fue, por así decirlo, el punto de partida para el desarrollo de todas las codificaciones modernas (Windows 1251, Unicode, UTF 8).

Inicialmente, contenía solo 128 caracteres del alfabeto latino, números arábigos y algo más, pero en la versión extendida fue posible utilizar los 256 valores que se pueden codificar en un byte de información. Aquellos. Se hizo posible agregar símbolos de letras de su idioma a Aski.

Aquí tendremos que hacer una digresión nuevamente para explicar: ¿Por qué necesitamos codificaciones? textos y por qué es tan importante. Los caracteres en la pantalla de su computadora se forman sobre la base de dos cosas: conjuntos de formas vectoriales (representaciones) de varios caracteres (están ubicados en archivos con ) y un código que le permite extraer de este conjunto de formas vectoriales (archivo de fuente ) exactamente el carácter que deberá insertarse en el lugar correcto.

Está claro que las fuentes mismas son responsables de las formas vectoriales, pero el sistema operativo y los programas utilizados en él son responsables de la codificación. Aquellos. cualquier texto en su computadora será un conjunto de bytes, cada uno de los cuales codifica un solo carácter de este mismo texto.

El programa que muestra este texto en la pantalla (editor de texto, navegador, etc.), al analizar el código, lee la codificación del siguiente carácter y busca la forma vectorial correspondiente en el archivo de fuente requerido, que está conectado para mostrar este Documento de texto. Todo es simple y banal.

Esto significa que para codificar cualquier carácter que necesitemos (por ejemplo, del alfabeto nacional), se deben cumplir dos condiciones: la forma vectorial de este carácter debe estar en la fuente utilizada y este carácter podría codificarse en codificaciones ASCII extendidas en un byte. Por lo tanto, existen muchas opciones de este tipo. Sólo para codificar caracteres del idioma ruso, existen varias variedades de Aska extendido.

Por ejemplo, apareció originalmente CP866, que tenía la capacidad de utilizar caracteres del alfabeto ruso y era una versión extendida de ASCII.

Aquellos. su parte superior coincidía completamente con la versión básica de Aska (128 caracteres latinos, números y otras tonterías), que se presenta en la captura de pantalla justo arriba, pero la parte inferior de la tabla con codificación CP866 tenía la apariencia indicada en la captura de pantalla justo debajo y le permitió codificar otros 128 signos (letras rusas y todo tipo de pseudografías):

Verás, en la columna de la derecha los números empiezan con 8, porque... Los números del 0 al 7 se refieren a la parte básica de ASCII (ver la primera captura de pantalla). Eso. La letra rusa "M" en CP866 tendrá el código 9C (se encuentra en la intersección de la fila correspondiente con 9 y la columna con el número C en el sistema numérico hexadecimal), que se puede escribir en un byte de información, y Si hay una fuente adecuada con caracteres rusos, esta letra aparecerá sin problemas en el texto.

¿De dónde salió esta cantidad? pseudografías en CP866? La cuestión es que esta codificación para texto en ruso se desarrolló en aquellos años difíciles en los que los sistemas operativos gráficos no estaban tan extendidos como lo están ahora. Y en Dosa y sistemas operativos de texto similares, los pseudográficos permitieron al menos diversificar de alguna manera el diseño de los textos y, por lo tanto, abundan en él CP866 y todos sus demás pares de la categoría de versiones extendidas de Asuka.

CP866 fue distribuido por IBM, pero además de esto, se desarrollaron varias codificaciones para los caracteres del idioma ruso, por ejemplo, se puede atribuir el mismo tipo (ASCII extendido). KOI8-R:

El principio de funcionamiento sigue siendo el mismo que el del CP866 descrito anteriormente: cada carácter de texto está codificado por un solo byte. La captura de pantalla muestra la segunda mitad de la mesa KOI8-R, porque La primera mitad es completamente consistente con la Asuka básica, que se muestra en la primera captura de pantalla de este artículo.

Entre las características de la codificación KOI8-R, se puede observar que las letras rusas en su tabla no están en orden alfabético, como lo hacía, por ejemplo, en CP866.

Si observa la primera captura de pantalla (de la parte básica, que se incluye en todas las codificaciones extendidas), notará que en KOI8-R las letras rusas se encuentran en las mismas celdas de la tabla que las letras correspondientes del alfabeto latino. de la primera parte de la tabla. Esto se hizo para facilitar el cambio de caracteres rusos a latinos descartando solo un bit (dos elevado a la séptima potencia o 128).

Windows 1251: la versión moderna de ASCII y por qué aparecen las grietas

El mayor desarrollo de las codificaciones de texto se debió al hecho de que los sistemas operativos gráficos estaban ganando popularidad y la necesidad de utilizar pseudográficos en ellos desapareció con el tiempo. Como resultado, surgió todo un grupo que, en esencia, seguían siendo versiones extendidas de Asuka (un carácter de texto está codificado con solo un byte de información), pero sin el uso de símbolos pseudográficos.

Pertenecían a las denominadas codificaciones ANSI, desarrolladas por el American Standards Institute. En el lenguaje común, el nombre cirílico también se utilizó para la versión compatible con el idioma ruso. Un ejemplo de esto sería.

Se diferenciaba favorablemente de los CP866 y KOI8-R utilizados anteriormente en que el lugar de los símbolos pseudográficos lo ocupaban los símbolos faltantes de la tipografía rusa (excepto el acento), así como los símbolos utilizados en lenguas eslavas cercanas a Ruso (ucraniano, bielorruso, etc.):

Debido a tal abundancia de codificaciones en ruso, los fabricantes de fuentes y de software tenían constantemente dolores de cabeza, y ustedes y yo, queridos lectores, a menudo sufrimos esos mismos notorios krakozyabry cuando hubo confusión con la versión utilizada en el texto.

Muy a menudo aparecían al enviar y recibir mensajes por correo electrónico, lo que implicaba la creación de tablas de conversión muy complejas, que, de hecho, no podían resolver este problema fundamentalmente, y los usuarios a menudo recurrían a la correspondencia para evitar los notorios trucos al usar Codificaciones rusas como CP866, KOI8-R o Windows 1251.

De hecho, las grietas que aparecieron en lugar del texto ruso fueron el resultado de un uso incorrecto de la codificación de este idioma, que no correspondía a aquella en la que estaba codificado originalmente el mensaje de texto.

Digamos que si intenta mostrar caracteres codificados con CP866 usando la tabla de códigos de Windows 1251, aparecerán estos mismos galimatías (un conjunto de caracteres sin sentido), reemplazando completamente el texto del mensaje.

Una situación similar surge muy a menudo en foros o blogs, cuando el texto con caracteres rusos se guarda por error en la codificación incorrecta que se utiliza en el sitio de forma predeterminada, o en el editor de texto incorrecto, lo que agrega chistes al código que no son visibles para a simple vista.

Al final, mucha gente se cansó de esta situación con muchas codificaciones y constantemente asustando basura, y aparecieron los requisitos previos para la creación de una nueva variación universal que reemplazaría a todas las existentes y finalmente resolvería el problema con la apariencia. de textos ilegibles. Además, estaba el problema de idiomas como el chino, donde había muchos más caracteres del idioma que 256.

Unicode: codificaciones universales UTF 8, 16 y 32

Estos miles de caracteres del grupo lingüístico del Sudeste Asiático no podrían describirse en un solo byte de información que se asignó para codificar caracteres en versiones extendidas de ASCII. Como resultado, se creó un consorcio llamado Unicódigo(Unicode - Unicode Consortium) con la colaboración de muchos líderes de la industria de TI (aquellos que producen software, codifican hardware, crean fuentes), que estaban interesados ​​en el surgimiento de una codificación de texto universal.

La primera variación lanzada bajo los auspicios del Consorcio Unicode fue UTF 32. El número en el nombre de la codificación significa la cantidad de bits que se utilizan para codificar un carácter. 32 bits equivalen a 4 bytes de información que serán necesarios para codificar un solo carácter en la nueva codificación universal UTF.

Como resultado, un mismo archivo con texto codificado en la versión extendida de ASCII y en UTF-32, en este último caso, tendrá un tamaño (peso) cuatro veces mayor. Esto es malo, pero ahora tenemos la oportunidad de codificar usando YTF una cantidad de caracteres igual a dos elevado a la potencia de treinta segundos ( miles de millones de caracteres, que cubrirá cualquier valor realmente necesario con un margen colosal).

Pero muchos países con idiomas del grupo europeo no necesitaban usar una cantidad tan grande de caracteres en la codificación, sin embargo, al usar UTF-32, sin ningún motivo recibieron un aumento de cuatro veces en el peso de los documentos de texto. y como resultado, un aumento en el volumen de tráfico de Internet y en el volumen de datos almacenados. Esto es mucho y nadie podría permitirse ese desperdicio.

Como resultado del desarrollo de Unicode, UTF-16, que resultó tener tanto éxito que se adoptó por defecto como espacio base para todos los caracteres que utilizamos. Utiliza dos bytes para codificar un carácter. Veamos cómo se ve esto.

En el sistema operativo Windows, puede seguir la ruta “Inicio” - “Programas” - “Accesorios” - “Herramientas del sistema” - “Tabla de caracteres”. Como resultado, se abrirá una tabla con las formas vectoriales de todas las fuentes instaladas en su sistema. Si selecciona el conjunto de caracteres Unicode en las “Opciones avanzadas”, podrá ver para cada fuente por separado toda la gama de caracteres incluidos en ella.

Por cierto, al hacer clic en cualquiera de ellos, puedes ver sus dos bytes. código en formato UTF-16, que consta de cuatro dígitos hexadecimales:

¿Cuántos caracteres se pueden codificar en UTF-16 usando 16 bits? 65.536 (dos elevado a dieciséis), y este es el número que se adoptó como espacio base en Unicode. Además, existen formas de codificar alrededor de dos millones de caracteres usándolo, pero estaban limitadas a un espacio ampliado de un millón de caracteres de texto.

Pero incluso esta versión exitosa de la codificación Unicode no trajo mucha satisfacción a quienes escribieron, digamos, programas solo en inglés, porque para ellos, después de la transición de la versión extendida de ASCII a UTF-16, el peso de los documentos se duplicó ( un byte por carácter en Aski y dos bytes por el mismo carácter en YUTF-16).

Fue precisamente para satisfacer a todos y a todo en el consorcio Unicode que se decidió idear codificación de longitud variable. Se llamó UTF-8. A pesar del ocho en su nombre, en realidad tiene una longitud variable, es decir. Cada carácter de texto se puede codificar en una secuencia de uno a seis bytes de longitud.

En la práctica, UTF-8 sólo utiliza el rango de uno a cuatro bytes, porque más allá de cuatro bytes de código ya no es posible imaginar nada en teoría. Todos los caracteres latinos que contiene están codificados en un byte, como en el antiguo ASCII.

Lo que es digno de mención es que en el caso de codificar solo el alfabeto latino, incluso aquellos programas que no entienden Unicode seguirán leyendo lo que está codificado en YTF-8. Aquellos. la parte central de Asuka simplemente fue transferida a esta creación del consorcio Unicode.

Los caracteres cirílicos en UTF-8 están codificados en dos bytes y, por ejemplo, los caracteres georgianos están codificados en tres bytes. El Consorcio Unicode, después de crear UTF 16 y 8, resolvió el problema principal: ahora tenemos las fuentes tienen un solo espacio de código. Y ahora sus fabricantes sólo pueden llenarlo con formas vectoriales de caracteres de texto en función de sus puntos fuertes y capacidades. Ahora incluso vienen en juegos.

En la "Tabla de caracteres" de arriba, puede ver que diferentes fuentes admiten diferentes números de caracteres. Algunas fuentes ricas en Unicode pueden ser bastante pesadas. Pero ahora se diferencian no en que fueron creados para diferentes codificaciones, sino en el hecho de que el fabricante de la fuente llenó o no completamente el espacio de código único con ciertas formas vectoriales.

Palabras locas en lugar de letras rusas: cómo solucionarlo

Veamos ahora cómo aparecen krakozyabrs en lugar de texto o, en otras palabras, cómo se selecciona la codificación correcta para el texto en ruso. En realidad, se establece en el programa en el que crea o edita este mismo texto o código utilizando fragmentos de texto.

Para editar y crear archivos de texto, personalmente uso un muy bueno, en mi opinión, . Sin embargo, puede resaltar la sintaxis de cientos de otros lenguajes de programación y marcado, y también tiene la capacidad de ampliarse mediante complementos. Lea una reseña detallada de este maravilloso programa en el enlace proporcionado.

En el menú superior de Notepad++ hay un elemento "Codificaciones", donde tendrá la oportunidad de convertir una opción existente a la utilizada de forma predeterminada en su sitio:

En el caso de un sitio en Joomla 1.5 y superior, así como en el caso de un blog en WordPress, debes elegir la opción para evitar la aparición de grietas. UTF 8 sin lista de materiales. ¿Qué es el prefijo BOM?

El hecho es que cuando estaban desarrollando la codificación YUTF-16, por alguna razón decidieron adjuntarle la capacidad de escribir el código de caracteres tanto en secuencia directa (por ejemplo, 0A15) como a la inversa (150A). . Y para que los programas comprendan exactamente en qué secuencia leer los códigos, se inventó lista de materiales(Marca de orden de bytes o, en otras palabras, firma), que se expresó agregando tres bytes adicionales al comienzo de los documentos.

En la codificación UTF-8, no se proporcionaron BOM en el consorcio Unicode y, por lo tanto, agregar una firma (esos notorios tres bytes adicionales al comienzo del documento) simplemente evita que algunos programas lean el código. Por tanto, a la hora de guardar archivos en UTF, siempre debemos seleccionar la opción sin BOM (sin firma). Entonces estas adelantado protéjase de los krakozyabrs rastreros.

Lo que es digno de mención es que algunos programas en Windows no pueden hacer esto (no pueden guardar texto en UTF-8 sin una lista de materiales), por ejemplo, el mismo Bloc de notas de Windows. Guarda el documento en UTF-8, pero aún agrega la firma (tres bytes adicionales) al principio. Además, estos bytes siempre serán los mismos: lea el código en secuencia directa. Pero en los servidores, debido a esta pequeña cosa, puede surgir un problema: saldrán delincuentes.

Por lo tanto, bajo ninguna circunstancia No utilices el bloc de notas normal de Windows para editar documentos en su sitio si no desea que aparezcan grietas. Considero que la mejor y más sencilla opción es el editor Notepad++ ya mencionado, que prácticamente no tiene inconvenientes y sólo tiene ventajas.

En Notepad++, cuando selecciona una codificación, tendrá la opción de convertir texto a codificación UCS-2, que es muy similar al estándar Unicode. También en el Bloc de notas será posible codificar texto en ANSI, es decir. En relación al idioma ruso, este será Windows 1251, que ya hemos descrito anteriormente. ¿De dónde viene esta información?

Está registrado en el registro de su sistema operativo Windows: qué codificación elegir en el caso de ANSI, cuál elegir en el caso de OEM (para el idioma ruso será CP866). Si configura otro idioma predeterminado en su computadora, estas codificaciones serán reemplazadas por otras similares de la categoría ANSI u OEM para ese mismo idioma.

Después de guardar el documento en Notepad++ con la codificación que necesita o abrir el documento desde el sitio para editarlo, podrá ver su nombre en la esquina inferior derecha del editor:

Para evitar a los paletos Además de las acciones descritas anteriormente, será útil escribir información sobre esta codificación en el encabezado del código fuente de todas las páginas del sitio para que no haya confusión en el servidor o host local.

En general, todos los lenguajes de marcado de hipertexto, excepto HTML, utilizan una declaración xml especial, que especifica la codificación del texto.

Antes de analizar el código, el navegador sabe qué versión se está utilizando y exactamente cómo debe interpretar los códigos de caracteres de ese idioma. Pero lo que es digno de mención es que si guarda el documento en el Unicode predeterminado, entonces esta declaración xml se puede omitir (la codificación se considerará UTF-8 si no hay una BOM o UTF-16 si hay una BOM).

En el caso de un documento en lenguaje HTML, la codificación se utiliza para indicar metaelemento, que está escrito entre las etiquetas Head de apertura y cierre:

... ...

Esta entrada es bastante diferente de la adoptada en, pero es totalmente compatible con el nuevo estándar Html 5 que se está introduciendo lentamente, y cualquier navegador utilizado actualmente la entenderá correctamente.

En teoría, sería mejor colocar un elemento Meta que indique la codificación del documento HTML. lo más alto posible en el encabezado del documento de modo que en el momento de encontrar el primer carácter en el texto que no sea del ANSI básico (que siempre se leen correctamente y en cualquier variación), el navegador ya debería tener información sobre cómo interpretar los códigos de estos caracteres.

¡Buena suerte para ti! Nos vemos pronto en las páginas del blog.

Puedes ver más vídeos entrando a
");">

Tú podrías estar interesado

¿Qué son las direcciones URL? ¿En qué se diferencian los enlaces absolutos y relativos de un sitio?
OpenServer: un servidor local moderno y un ejemplo de cómo usarlo para instalar WordPress en una computadora
Qué es Chmod, qué permisos asignar a archivos y carpetas (777, 755, 666) y cómo hacerlo vía PHP
Búsqueda de Yandex por sitio y tienda en línea

Dic Maleficio Símbolo Dic Maleficio Símbolo
000 00 especialista. NOP 128 80 Ђ
001 01 especialista. SOL 129 81 Ѓ
002 02 especialista. STX 130 82
003 03 especialista. ETX 131 83 ѓ
004 04 especialista. EOT 132 84
005 05 especialista. ENQ 133 85
006 06 especialista. ACK 134 86
007 07 especialista. BEL 135 87
008 08 especialista. BS 136 88
009 09 especialista. PESTAÑA 137 89
010 0Aespecialista. LF 138 8AЉ
011 0Bespecialista. Vermont 139 8B‹ ‹
012 0Cespecialista. FF 140 8CЊ
013 0Despecialista. CR 141 8DЌ
014 0Eespecialista. ENTONCES 142 8EЋ
015 0Fespecialista. SI. 143 8FЏ
016 10 especialista. DLE 144 90 ђ
017 11 especialista. DC1 145 91
018 12 especialista. DC2 146 92
019 13 especialista. DC3 147 93
020 14 especialista. DC4 148 94
021 15 especialista. N.A.K. 149 95
022 16 especialista. SINC 150 96
023 17 especialista. ETB 151 97
024 18 especialista. PODER 152 98
025 19 especialista. E. M. 153 99
026 1Aespecialista. SUB 154 9Aљ
027 1Bespecialista. ESC 155 9B
028 1Cespecialista. FS 156 9Cњ
029 1Despecialista. G.S. 157 9Dќ
030 1Eespecialista. R.S. 158 9Eћ
031 1Fespecialista. A NOSOTROS 159 9Fџ
032 20 embrague SP (espacio) 160 A0
033 21 ! 161 A1 Ў
034 22 " 162 A2ў
035 23 # 163 A3Ћ
036 24 $ 164 A4¤
037 25 % 165 A5Ґ
038 26 & 166 A6¦
039 27 " 167 A7§
040 28 ( 168 A8yo
041 29 ) 169 A9©
042 2A* 170 AUTOMÓVIL CLUB BRITÁNICO.Є
043 2B+ 171 AB«
044 2C, 172 C.A.¬
045 2D- 173 ANUNCIO­
046 2E. 174 A.E.®
047 2F/ 175 A. F.Ї
048 30 0 176 B0°
049 31 1 177 B1±
050 32 2 178 B2І
051 33 3 179 B3і
052 34 4 180 B4ґ
053 35 5 181 B5µ
054 36 6 182 B6
055 37 7 183 B7·
056 38 8 184 B8mi
057 39 9 185 B9
058 3A: 186 LICENCIADO EN LETRAS.є
059 3B; 187 CAMA Y DESAYUNO»
060 3C< 188 ANTES DE CRISTO.ј
061 3D= 189 BDЅ
062 3E> 190 SERѕ
063 3F? 191 B.F.ї
064 40 @ 192 C0 A
065 41 A 193 C1 B
066 42 B 194 C2 EN
067 43 C 195 C3 GRAMO
068 44 D 196 C4 D
069 45 mi 197 C5 mi
070 46 F 198 C6 Y
071 47 GRAMO 199 C7 z
072 48 h 200 C8 Y
073 49 I 201 C9 Y
074 4Aj 202 CALIFORNIA. A
075 4Bk 203 C.B. l
076 4Cl 204 CC METRO
077 4DMETRO 205 CD norte
078 4Enorte 206 CE ACERCA DE
079 4Foh 207 FQ PAG
080 50 PAG 208 D0 R
081 51 q 209 D1 CON
082 52 R 210 D2 t
083 53 S 211 D3 Ud.
084 54 t 212 D4 F
085 55 Ud. 213 D5 X
086 56 V 214 D6 C
087 57 W. 215 D7 h
088 58 X 216 D8 sh
089 59 Y 217 D9 SCH
090 5Az 218 DA Kommersant
091 5B[ 219 D. B. Y
092 5C\ 220 corriente continua b
093 5D] 221 DD mi
094 5E^ 222 Delaware YU
095 5F_ 223 DF I
096 60 ` 224 E0 A
097 61 a 225 E1 b
098 62 b 226 E2 V
099 63 C 227 E3 GRAMO
100 64 d 228 E4 d
101 65 mi 229 E5 mi
102 66 F 230 E6 y
103 67 gramo 231 E7 h
104 68 h 232 E8 Y
105 69 i 233 E9 th
106 6Aj 234 E.A. A
107 6Bk 235 E.B. yo
108 6Cyo 236 CE. metro
109 6Dmetro 237 DE norte
110 6Enorte 238 E.E. oh
111 6Foh 239 FE PAG
112 70 pag 240 F0 R
113 71 q 241 F1 Con
114 72 r 242 F2 t
115 73 s 243 F3 en
116 74 t 244 F4 F
117 75 tu 245 F5 X
118 76 v 246 F6 ts
119 77 w 247 F7 h
120 78 X 248 F8 w
121 79 y 249 F9 sch
122 7Az 250 FA. ъ
123 7B{ 251 pensión completa s
124 7C| 252 FC b
125 7D} 253 FD oh
126 7E~ 254 F.E. Yu
127 7FEspecialista. DEL 255 FF I

Tabla de códigos de caracteres ASCII de Windows.
Descripción de caracteres especiales (de control)

Cabe señalar que los caracteres de control de la tabla ASCII se utilizaron originalmente para garantizar el intercambio de datos mediante teletipo, la entrada de datos desde cinta perforada y para el control sencillo de dispositivos externos.
Actualmente, la mayoría de los caracteres de control de tablas ASCII ya no llevan esta carga y pueden usarse para otros fines.
Código Descripción
NULO, 00Nulo, vacío
SOH, 01Inicio del rumbo
STX, 02Inicio de TeXt, el comienzo del texto.
ETX, 03Fin del texto, fin del texto
EOT, 04Fin de la transmisión
ENQ, 05Preguntar. Por favor confirmar
ACK, 06Reconocimiento. Confirmo
bel, 07campana, llama
Licenciatura, 08Retroceso, retroceder un carácter
Pestaña, 09Pestaña, pestaña horizontal
LF, 0AAvance de línea, avance de línea.
Hoy en día en la mayoría de los lenguajes de programación se denota como \n
TV, 0BPestaña vertical, tabulación vertical.
FF, 0CAvance de formulario, avance de página, nueva página
CR, 0DRetorno de carro, retorno de carro.
Hoy en día en la mayoría de los lenguajes de programación se denota como \r
Entonces, 0EShift Out, cambia el color de la cinta de tinta en el dispositivo de impresión
SI,0FShift In, devuelve el color de la cinta de tinta al dispositivo de impresión
DLE, 10Data Link Escape, cambiando el canal a transmisión de datos
DC1, 11
DC2, 12
CD3, 13
CD4, 14
Control de dispositivos, símbolos de control de dispositivos
NAK, 15Reconocimiento Negativo, no confirmo.
SINC, 16Sincronización. Símbolo de sincronización
ETB, 17Fin del bloque de texto, fin del bloque de texto
CAN, 18Cancelar, cancelar transferido previamente
EM, 19Fin del medio
SUB, 1ASustituto, sustituto. Colocado en lugar de un símbolo cuyo significado se perdió o se corrompió durante la transmisión.
ESC, 1BSecuencia de control de escape
FS, 1CSeparador de archivos, separador de archivos
GS, 1DSeparador de grupo
RS, 1ESeparador de registros, separador de registros
EE.UU., 1PSeparador de unidades
DEL, 7FEliminar, borrar el último carácter.

Como sabes, una computadora almacena información en forma binaria, representándola como una secuencia de unos y ceros. Para traducir la información a una forma conveniente para la percepción humana, cada secuencia única de números se reemplaza por su símbolo correspondiente cuando se muestra.

Uno de los sistemas para correlacionar códigos binarios con caracteres impresos y de control es

En el nivel actual de desarrollo de la tecnología informática, no es necesario que el usuario conozca el código de cada carácter específico. Sin embargo, una comprensión general de cómo se lleva a cabo la codificación es extremadamente útil y, para algunas categorías de especialistas, incluso necesaria.

Creando ASCII

La codificación se desarrolló originalmente en 1963 y luego se actualizó dos veces a lo largo de 25 años.

En la versión original, la tabla de caracteres ASCII incluía 128 caracteres; luego apareció una versión extendida, donde se guardaron los primeros 128 caracteres y los caracteres que antes faltaban se asignaron a códigos con el octavo bit involucrado.

Durante muchos años, esta codificación fue la más popular del mundo. En 2006, Latin 1252 tomó la posición de liderazgo y, desde finales de 2007 hasta la actualidad, Unicode ha mantenido firmemente la posición de liderazgo.

Representación informática de ASCII

Cada carácter ASCII tiene su propio código, que consta de 8 caracteres que representan un cero o un uno. El número mínimo en esta representación es cero (ocho ceros en el sistema binario), que es el código del primer elemento de la tabla.

Se reservaron dos códigos de la tabla para cambiar entre el estándar US-ASCII y su variante nacional.

Después de que ASCII comenzó a incluir no 128, sino 256 caracteres, se generalizó una variante de codificación, en la que la versión original de la tabla se almacenaba en los primeros 128 códigos con el octavo bit cero. Los caracteres escritos nacionales se almacenaron en la mitad superior de la tabla (posiciones 128-255).

El usuario no necesita conocer directamente los códigos de caracteres ASCII. Por lo general, un desarrollador de software solo necesita saber el número de elemento en la tabla para calcular su código usando el sistema binario si es necesario.

idioma ruso

Después del desarrollo de codificaciones para las lenguas escandinavas, chino, coreano, griego, etc. a principios de los años 70, la Unión Soviética comenzó a crear su propia versión. Pronto, se desarrolló una versión de una codificación de 8 bits llamada KOI8, conservando los primeros 128 códigos de caracteres ASCII y asignando el mismo número de posiciones para las letras del alfabeto nacional y caracteres adicionales.

Antes de la introducción de Unicode, KOI8 dominaba el segmento ruso de Internet. Había opciones de codificación tanto para el alfabeto ruso como para el ucraniano.

problemas ASCII

Dado que el número de elementos, incluso en la tabla extendida, no excedía los 256, no era posible acomodar varios scripts diferentes en una codificación. En los años 90, apareció en Runet el problema "crocozyabr", cuando los textos escritos en caracteres rusos ASCII se mostraban incorrectamente.

El problema era que los distintos códigos ASCII no coincidían entre sí. Recordemos que en las posiciones 128-255 se podían ubicar varios caracteres, y al cambiar una codificación cirílica a otra, todas las letras del texto se reemplazaban por otras que tenían el mismo número en una versión diferente de la codificación.

Estado actual

Con la llegada de Unicode, la popularidad de ASCII comenzó a declinar drásticamente.

La razón de esto radica en el hecho de que la nueva codificación hizo posible acomodar caracteres de casi todos los idiomas escritos. En este caso, los primeros 128 caracteres ASCII corresponden a los mismos caracteres en Unicode.

En 2000, ASCII era la codificación más popular en Internet y se utilizaba en el 60% de las páginas web indexadas por Google. En 2012, la proporción de páginas de este tipo había caído al 17% y Unicode (UTF-8) ocupó el lugar de la codificación más popular.

Por tanto, ASCII es una parte importante de la historia de la tecnología de la información, pero su uso en el futuro parece poco prometedor.



 Arriba