Hogar Flores perennes Decodificando caracteres al ruso. ¿Qué es la codificación ANSI y con qué se come? Visualización incorrecta de símbolos

Decodificando caracteres al ruso. ¿Qué es la codificación ANSI y con qué se come? Visualización incorrecta de símbolos

La codificación del sitio (codificación) es la correspondencia de una serie de números con caracteres (números, letras, signos y otros caracteres especiales). Las codificaciones más comunes son ASCII junto con Unicode UTF-8 y Windows-1251. En el contenido, una metaetiqueta especial es responsable de la codificación: que configura un tipo específico de código para las páginas. En este caso, es UTF-8 Unicode.

En palabras simples, estos son símbolos y números estándar que corresponden a un tipo específico de conjunto de letras escritas, números, signos y otros elementos. La mayoría de las veces, el sitio utiliza un tipo de codificación, pero hay excepciones en las que se pueden instalar varias codificaciones a la vez. Sin embargo, esto puede provocar una visualización incorrecta de todo el recurso web. Muchos sitios utilizan el estándar de codificación UTF-8, ya que este tipo de código es compatible con muchos navegadores, motores de búsqueda, servidores y otras plataformas bien conocidos. Muy a menudo hay situaciones en las que la codificación especificada en el sitio web no coincide con la instalada en el servidor. La razón principal de este fenómeno es que el proveedor no admite el tipo de codificación proporcionado, por lo que envía "la suya propia", lo que en realidad conduce a una visualización incorrecta de la información. Una codificación es una tabla que describe cualquier correspondencia entre un carácter específico y un número. Cada símbolo que está visible en el sitio es solo un conjunto de bits para una computadora (un conjunto de ceros y otros).

Tipos de codificaciones de sitios

Hay varios tipos de codificaciones en el mundo de Internet:

  • ASCII es la primera codificación adoptada por el American National World Standards Institute. Para la codificación se utilizaron solo 7 bits, donde por primera vez se colocan 128 valores del alfabeto inglés, así como todos los números, signos y símbolos. Esta codificación no es universal y se usó con mayor frecuencia en sitios en inglés.
  • El cirílico es una versión verdaderamente doméstica. La codificación utilizó la segunda parte de la tabla de códigos principal, o más bien caracteres del 129 al 256. Se utiliza en sitios y blogs en idioma ruso.
  • Las codificaciones 1250-1258 (sistemas MS Windows y Windows) son codificaciones estándar de 8 bits que aparecieron inmediatamente después del lanzamiento del conocido sistema operativo Microsoft Windows. Los números del 1250 al 1258 están dirigidos al idioma utilizado por la codificación. 1250 son los idiomas de Europa central y 1251 son para el alfabeto cirílico.
  • KOI8: significa código de intercambio de información de 8 bits. Por lo general, los estándares del alfabeto cirílico ruso se utilizan en sistemas Unix y similares, donde se aplican los estándares KOI-7, KOI8-R y KOI8-U.
  • Unicode (nombre original Unicode) es un estándar bien conocido para la codificación de caracteres que permite que los caracteres se describan literalmente en todos los idiomas del mundo. A menudo denominado "U + xxxx", donde "xxxx" son valores hexadecimales. La familia más común de esta codificación se considera UTF (formato de transformación Unicode), es decir, UTF-8, 16 y 32.

Cada vista individual se puede utilizar directamente en cualquier sitio.

Codificaciones universales y populares

Hoy en día, la codificación más popular y conocida es UTF-8, y es gracias a ella que es posible proporcionar la máxima compatibilidad con todos los sistemas antiguos que usaban los tipos de caracteres habituales de 8 bits. La codificación UTF-8 incluye la mayoría de los sitios en Internet y es este estándar el que se considera universal. UTF-8 admite caracteres cirílicos y latinos.

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

Para algunos, esta información puede parecer superflua, pero sabrá cuántas preguntas recibo con respecto al krakozyabrov (un conjunto de caracteres no legibles). Ahora tendré la oportunidad de remitir a todos al texto de este artículo y encontrar mis jambas de forma independiente. Bueno, prepárate para absorber la información e intenta seguir la historia.

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

El desarrollo de codificaciones de texto se llevó a cabo simultáneamente con la formación de la industria de TI, y durante este tiempo lograron experimentar muchos cambios. Históricamente, todo comenzó con EBCDIC, que no era eufónico en la pronunciación rusa, lo que hizo posible 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 se suele pronunciar como "aski"). Describe los primeros 128 caracteres más utilizados por los usuarios de habla inglesa: números arábigos y signos de puntuación.

Incluso estos 128 caracteres descritos en ASCII incluían algunos caracteres de servicio como paréntesis, líneas hash, asteriscos, etc. De hecho, tú mismo puedes verlos:

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

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

Aquí, quizás, 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 saben, la computadora solo funciona con números en el sistema binario, es decir, con ceros y unos ("álgebra de Boole", si alguien fue a la universidad o la escuela). , cada uno de los cuales es un 2 en potencia, comenzando desde cero, y hasta dos en el séptimo:

No es difícil entender que solo puede haber 256 combinaciones posibles de ceros y unos en tal construcción Es bastante simple convertir un número de un sistema binario a uno decimal. Solo necesitas sumar todas las potencias de dos por encima de las cuales hay unas.

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

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

Bien para convertir número binario a hexadecimal recurrir al siguiente método sencillo e intuitivo. Cada byte de información se divide en dos partes de cuatro bits, como se muestra en la captura de pantalla anterior. Ese. en cada medio byte, sólo se pueden codificar en binario dieciséis valores (dos a la cuarta potencia), que se pueden representar fácilmente como un número hexadecimal.

Además, en la mitad izquierda del byte, será necesario volver a contar los grados comenzando desde cero, y no como se muestra en la captura de pantalla. Como resultado, mediante algunos 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 acertijo les haya resultado claro. Bueno, ahora continuemos, de hecho, hablando de codificaciones de texto.

Versiones extendidas de Asuka: codificaciones CP866 y KOI8-R con pseudográficos

Entonces, comenzamos a hablar de ASCII, que fue, por así decirlo, un 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 usar 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í será necesario divagar una vez más para aclarar: ¿Por qué necesitamos codificaciones? textos y por qué es tan importante. Los símbolos en la pantalla de su computadora se forman sobre la base de dos cosas: conjuntos de formas vectoriales (representaciones) de todo tipo de caracteres (están en archivos co) y un código que le permite extraer este conjunto de formas vectoriales (fuente archivo) exactamente el símbolo que deberá insertarse en el lugar correcto.

Está claro que las fuentes en sí 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 trillado.

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 estar codificado en codificaciones ASCII extendidas en un byte. Por lo tanto, hay un montón de opciones de este tipo. Solo para codificar los caracteres del idioma ruso, existen varias variedades del Asuka extendido.

Por ejemplo, apareció originalmente CP866, en el que era posible utilizar los 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 Asuka (128 caracteres latinos, números y cualquier otra mierda), que se muestra en la captura de pantalla justo arriba, pero ya la parte inferior de la tabla con codificación CP866 tenía la vista indicada en la captura de pantalla justo debajo y permite codificar otros 128 signos (letras rusas y todo tipo de pseudo-gráficos):

Verá, en la columna de la derecha, los números comienzan con 8, tk. los números del 0 al 7 se refieren a la parte ASCII básica (consulte la primera captura de pantalla). Ese. la letra rusa "M" en CP866 tendrá el código 9C (se encuentra en la intersección de la línea 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 sin problemas se mostrará en el texto.

¿De dónde salió esta cantidad? pseudográficos en CP866? La cuestión es que esta codificación para texto en ruso se desarrolló en aquellos años peludos, cuando no había tanta difusión de sistemas operativos gráficos como ahora. Y en Dos, y sistemas operativos de texto similares, los pseudográficos permitieron diversificar de alguna manera el diseño de los textos y, por lo tanto, el CP866 y todos sus demás pares de la categoría de versiones extendidas de Asuka abundan en él.

CP866 fue distribuido por IBM, pero además de esto, se desarrollaron varias codificaciones para caracteres rusos, por ejemplo, este tipo (ASCII extendido) se puede atribuir KOI8-R:

El principio de su funcionamiento sigue siendo el mismo que el del CP866 descrito un poco antes: cada carácter del texto está codificado con un solo byte. La captura de pantalla muestra la segunda mitad de la tabla KOI8-R, ya que la primera mitad es totalmente consistente con el Asuka básico, 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 notar que las letras rusas en su tabla no están en orden alfabético, como, por ejemplo, lo hicieron en CP866.

Si observa la primera captura de pantalla (de la parte base, que se incluye en todas las codificaciones extendidas), notará que en KOI8-R las letras rusas están ubicadas en las mismas celdas de la tabla que las letras de la consonante del alfabeto latino. con ellos desde la primera parte de la tabla. Esto se hizo por la conveniencia de cambiar de caracteres rusos a caracteres latinos descartando solo un bit (dos a la séptima potencia o 128).

Windows 1251: versión moderna de ASCII y por qué aparece krakozyabry

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 pseudo-grá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 del texto está codificado con un solo byte de información), pero ya sin el uso de caracteres pseudográficos.

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

Se diferenciaba favorablemente de los CP866 y KOI8-R utilizados anteriormente en que el lugar de los símbolos pseudográficos en él lo ocupaban los símbolos faltantes de la tipografía rusa (a excepción de la marca de acento), así como los símbolos utilizados en los idiomas eslavos. cerca del ruso (ucraniano, bielorruso, etc.)):

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

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

De hecho, los krakozyabry que salieron en lugar del texto en ruso fueron el resultado de un uso incorrecto de la codificación de este idioma, que no se correspondía con el que originalmente estaba codificado el mensaje de texto.

Por ejemplo, si intentamos mostrar caracteres codificados con CP866 usando la tabla de códigos de Windows 1251, aparecerán estos mismos krakozyabry (conjunto de caracteres sin sentido), reemplazando por completo el texto del mensaje.

Una situación similar ocurre muy a menudo cuando, foros o blogs, cuando el texto con caracteres rusos se guarda por error con la codificación incorrecta que se usa en el sitio de forma predeterminada, o en el editor de texto incorrecto que agrega arcadas al código que no es visible para a simple vista.

Al final, muchos estaban cansados ​​de tal situación con multitud de codificaciones y krakozyabras constantemente emergentes, 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 de raíz de la aparición de textos ilegibles. Además, estaba el problema de idiomas como el chino, donde los caracteres del idioma eran mucho más de 256.

Unicode: codificaciones UTF universales 8, 16 y 32

Estos miles de caracteres del grupo de idiomas del sudeste asiático no se pudieron describir en un byte de información, que se asignó para codificar caracteres en versiones extendidas de ASCII. Como resultado, un consorcio llamado Unicode(Unicode - Unicode Consortium) con la colaboración de muchos líderes de la industria de TI (aquellos que producen software, que codifican hardware, que 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 el número de bits que se utilizan para codificar un carácter. 32 bits son 4 bytes de información que se necesitarán para codificar un solo carácter en la nueva codificación UTF universal.

Como resultado, el mismo archivo con texto codificado en la versión extendida de ASCII y en UTF-32, en este último caso, tendrá el tamaño (peso) cuatro veces mayor. Esto es malo, pero ahora tenemos la oportunidad de codificar el número de caracteres igual a dos a la potencia de treinta segundos ( miles de millones de personajes, 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 en absoluto, pero al usar UTF-32 recibieron un aumento de cuatro veces en el peso de los documentos de texto por nada, y como como resultado, un aumento en el volumen de tráfico de Internet y 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ó ser tan exitoso que fue aceptado por defecto como espacio base para todos los símbolos que usamos. Utiliza dos bytes para codificar un carácter. Veamos cómo se ve este caso.

En el sistema operativo Windows, puede seguir la ruta "Inicio" - "Programas" - "Accesorios" - "Herramientas del sistema" - "Mapa de símbolos". Como resultado, se abrirá una tabla con formas vectoriales de todas las fuentes instaladas en su sistema. Si selecciona el juego de caracteres Unicode en los "Parámetros adicionales", podrá ver para cada fuente por separado la variedad completa de caracteres incluidos en ella.

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

¿Cuántos caracteres se pueden codificar en UTF-16 con 16 bits? 65536 (dos elevado a dieciséis), y fue este número el que se tomó como espacio base en Unicode. Además, hay formas de codificar con él y alrededor de dos millones de caracteres, pero se limitaron al espacio extendido 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, por ejemplo, programas solo en inglés, porque después de la transición de la versión extendida de ASCII a UTF-16, el peso de los documentos se duplicó (uno byte por un carácter en Aski y dos bytes por el mismo carácter en UTP-16).

Fue precisamente para la satisfacción de todos y de todo en el consorcio Unicode que se decidió crear codificación de longitud variable... Lo llamaron UTF-8. A pesar de la figura de ocho en el nombre, realmente tiene una longitud variable, es decir, cada carácter del texto se puede codificar en una secuencia de uno a seis bytes de longitud.

En la práctica, en UTF-8, solo se usa el rango de uno a cuatro bytes, porque más allá de cuatro bytes de código, nada es siquiera teóricamente posible de imaginar. Todos los caracteres latinos que contiene están codificados en un byte, como en el antiguo ASCII.

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

Los caracteres cirílicos en UTF-8 están codificados en dos bytes y, por ejemplo, los georgianos, en tres bytes. Unicode Consortium después de crear UTF 16 y 8 resolvió el problema principal; ahora tenemos hay un solo espacio de código en las fuentes... Y ahora sus productores solo tienen que llenarlo con formas vectoriales de símbolos de texto en función de sus fortalezas y capacidades. Ahora incluso en sets.

En la "Tabla de caracteres" anterior, puede ver que diferentes fuentes admiten un número diferente de caracteres. Algunas fuentes ricas en Unicode pueden ser muy pesadas. Pero ahora difieren no en que se creen para diferentes codificaciones, sino en que el fabricante de la fuente ha llenado o no un solo espacio de código con ciertas formas vectoriales hasta el final.

Krakozyabry en lugar de letras rusas: cómo solucionarlo

Veamos ahora cómo aparecen los krakozyabras en lugar del texto o, en otras palabras, cómo se elige 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 codifica utilizando fragmentos de texto.

Para editar y crear archivos de texto, personalmente uso uno muy bueno, en mi opinión. Sin embargo, puede resaltar la sintaxis de un buen centenar de lenguajes de programación y de marcado más, y también tiene la capacidad de expandirse mediante complementos. Lea una revisión detallada de este gran programa en el enlace proporcionado.

En el menú superior de Notepad ++ hay un elemento "Codificaciones", donde podrá convertir la versión existente a la que se usa por defecto 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, para evitar la aparición de grietas, elija la opción UTF 8 sin BOM... ¿Qué es el prefijo BOM?

El hecho es que cuando se desarrolló la codificación YUTF-16, por alguna razón decidieron adjuntarle algo como la capacidad de escribir un código de carácter, tanto en secuencia directa (por ejemplo, 0A15) como en reversa (150A) . Y para que los programas entiendan en qué secuencia leer los códigos, y se inventó BOM(Marca de orden de bytes o, en otras palabras, firma), que se expresó en la adición de tres bytes adicionales al comienzo de los documentos.

En la codificación UTF-8, no se proporciona BOM en el consorcio Unicode y, por lo tanto, la adición de una firma (estos tres bytes adicionales más notorios al comienzo del documento) para algunos programas simplemente interfiere con la lectura del código. Por lo tanto, a la hora de guardar archivos en UTP, siempre debemos elegir la opción sin BOM (sin firma). Entonces avanzas Protéjase de salir arrastrándose Krakozyabrov.

Lo que es digno de mención es que algunos programas en Windows no pueden hacer esto (no pueden guardar texto en UTP-8 sin BOM), por ejemplo, el notorio Bloc de notas de Windows. Guarda el documento en UTF-8, pero aún antepone 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 bagatela, puede surgir un problema: saldrá krakozyabry.

Entonces de ninguna manera no use el bloc de notas normal de Windows para editar documentos de su sitio, si no desea la apariencia de krakozyabrs. La mejor y más sencilla opción, creo, es el ya mencionado editor Notepad ++, que prácticamente no tiene inconvenientes y solo consta de ventajas.

En Notepad ++, al elegir una codificación, podrá convertir el texto a la codificación UCS-2, que es inherentemente muy cercana al estándar Unicode. También en el Bloc de notas será posible codificar texto en ANSI, es decir, en relación con el idioma ruso, ya lo describiremos justo antes de Windows 1251. ¿De dónde proviene 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 instala un idioma predeterminado diferente 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 con la codificación que necesita en Notepad ++ o abrir el documento desde el sitio para editarlo, puede ver su nombre en la esquina inferior derecha del editor:

Para evitar krakozyabrov, 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, en todos los lenguajes de marcado de hipertexto, excepto Html, se utiliza una declaración xml especial, que indica la codificación del texto.

Antes de comenzar a analizar el código, el navegador sabrá qué versión se está utilizando y cómo deben interpretarse exactamente los códigos de caracteres de este 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 BOM o YUTF-16 si hay BOM).

En el caso de un documento en lenguaje Html, para especificar la codificación, use Elemento meta, que se escribe entre las etiquetas Head de apertura y cierre:

... ...

Esta entrada es bastante diferente de la adoptada en, pero cumple completamente con el nuevo estándar Html 5 que se está introduciendo lentamente, y será 100% entendido correctamente por cualquier navegador utilizado actualmente.

En teoría, el elemento Meta que indica la codificación del documento Html estaría mejor configurado lo más alto posible en el encabezado del documento de modo que al momento de encontrar el primer carácter del texto que no sea de ANSI básico (que siempre se lee 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 sitio del blog.

Te puede interesar

¿Qué son las URL? ¿Cuál es la diferencia entre enlaces absolutos y relativos para un sitio?
OpenServer es un servidor local moderno y un ejemplo de su uso para instalar WordPress en una computadora
Qué es Chmod, qué permisos asignar a archivos y carpetas (777, 755, 666) y cómo hacerlo a través de PHP
Búsqueda de Yandex en el sitio y la tienda en línea.

Más tarde ASCII se expandió (inicialmente no usó los 8 bits), por lo que se hizo posible usar no 128, sino 256 (2 a la octava potencia) caracteres diferentes que se pueden codificar en un byte de información.
Esta mejora hizo posible agregar a la codificación ASCII símbolos de lenguas nacionales de diferentes países, además del alfabeto latino ya existente.
Opciones de codificación extendidas ASCII hay tantos debido al hecho de que también hay muchos idiomas en el mundo. Creo que muchos de ustedes han oído hablar de una codificación como KOI8 (Código de intercambio de información, 8 bits); esta también es una codificación extendida ASCII... KOI8 incluía números, letras de los alfabetos latino y ruso, así como puntuación, caracteres especiales y pseudográficos.

Codificación ISO

La Organización Internacional de Normalización ha creado una gama de codificaciones para diferentes alfabetos / idiomas.

Codificaciones de la serie ISO 8859

Codificación Descripción
ISO 8859-1 (latín-1) Latín extendido, que incluye caracteres de la mayoría de los idiomas de Europa occidental (inglés, danés, irlandés, islandés, español, italiano, alemán, noruego, portugués, romanche, feroés, sueco, escocés (gaélico) y parcialmente holandés, finlandés, francés), así como algunos idiomas de Europa del Este (albanés) y africanos (afrikáans, swahili). Latin-1 carece del símbolo del euro y de la letra mayúscula Ÿ. Esta página de códigos se considera la codificación predeterminada para documentos HTML y mensajes de correo electrónico. Además, esta página de códigos corresponde a los primeros 256 caracteres de Unicode.
ISO 8859-2 (latín-2) Latín extendido, incluidos los símbolos de los idiomas de Europa Central y del Este (bosnio, húngaro, polaco, eslovaco, esloveno, croata, checo). Latin-2, como Latin-1, carece del símbolo del euro.
ISO 8859-3 (latín-3) Latín extendido, que incluye caracteres de idiomas del sur de Europa (maltés, turco y esperanto).
ISO 8859-4 (latín-4) Latín extendido, incluidos los símbolos de los idiomas del norte de Europa (idiomas groenlandés, estonio, letón, lituano y sami).
ISO 8859-5 (latino / cirílico) Cirílico, incluidos los símbolos de las lenguas eslavas (bielorruso, búlgaro, macedonio, ruso, serbio y en parte ucraniano).
ISO 8859-6 (latín / árabe) Símbolos utilizados en árabe. No se admiten otros idiomas de escritura árabe. La visualización correcta del texto ISO 8859-6 requiere soporte para escritura bidireccional y formas de caracteres sensibles al contexto.
ISO 8859-7 (latín / griego) Símbolos de la lengua griega moderna. También se puede utilizar para escribir textos griegos antiguos con una ortografía monótona.
ISO 8859-8 (latín / hebreo) Símbolos hebreos modernos. Se utiliza en dos variantes: con orden lógico de caracteres (requiere soporte bidireccional) y con orden visual de caracteres.
ISO 8859-9 (latín-5) Una variante de Latin-1, en la que los caracteres islandeses de uso poco frecuente se reemplazan por turcos. Utilizado para turco y kurdo.
ISO 8859-10 (latín-6) Una variante de Latin-4, más conveniente para los idiomas escandinavos.
ISO 8859-11 (latino / tailandés) Símbolos del idioma tailandés.
ISO 8859-13 (latín-7) Variante Latin-4, más conveniente para idiomas bálticos.
ISO 8859-14 (latín-8) Latín extendido para incluir caracteres de lenguas celtas como el escocés (gaélico) y el bretón.
ISO 8859-15 (latín-9) Una variante de Latin-1, en la que los caracteres de uso poco frecuente se reemplazan por los necesarios para la compatibilidad total con los idiomas finlandés, francés y estonio. Además, se agregó el símbolo del euro a Latin-9.
ISO 8859-16 (latín-10) Latín extendido, incluidos caracteres del sur de Europa y del este de Europa (albanés, húngaro, italiano, polaco, rumano, esloveno, croata), así como algunos idiomas de Europa occidental (irlandés en la nueva ortografía, alemán, finlandés, francés). Al igual que con Latin-9, el signo del euro se ha agregado a Latin-10.

Para documentos en inglés y la mayoría de los demás idiomas de Europa occidental, la codificación es ampliamente compatible ISO-8859-1.

En HTML ISO-8859-1 es la codificación predeterminada (en XHTML y HTML5, la codificación predeterminada es UTF-8).
Cuando utilice una codificación de página que no sea ISO-8859-1, debe incluirla en la etiqueta. .

Para HTML4:

Para HTML5:

Un ejemplo de codificación ANSI es el conocido Windows-1251.

Windows-1251 se compara favorablemente con otras codificaciones cirílicas de 8 bits (como CP866 e ISO 8859-5) por la presencia de casi todos los caracteres utilizados en la tipografía rusa para texto ordinario (solo falta el acento). También contiene todos los símbolos de otros idiomas eslavos: ucraniano, bielorruso, serbio, macedonio y búlgaro.
A continuación se muestran los valores decimales de los caracteres de codificación. Windows-1251.

Utilice la siguiente sintaxis para mostrar símbolos de tabla en un documento HTML:

& + código +;

Codificación de Windows-1251 (CP1251)

.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .MI .F

8.
Ђ
402
Ѓ
403

201A
ѓ
453

201E

2026

2020

2021

20AC

2030
Љ
409

2039
Њ
40A
Ќ
40C
Ћ
40B
Џ
40F

9.
ђ
452

2018

2019

201C

201D

2022

2013
-
2014

2122
љ
459

203A
њ
45A
ќ
45C
ћ
45B
џ
45F

UNA.

A0
Ў
40E
ў
45E
Ј
408
¤
A4
Ґ
490
¦
A6
§
A7
yo
401
©
A9
Є
404
«
AB
¬
C.A.
­
ANUNCIO
®
AE
Ї
407

B.
°
B0
±
B1
І
406
і
456
ґ
491
µ
B5

B6
·
B7
mi
451

2116
є
454
»
cama y desayuno
ј
458
Ѕ
405
ѕ
455
ї
457

C.
A
410
B
411
V
412
GRAMO
413
D
414
mi
415
F
416
Z
417
Y
418
Th
419
PARA
41A
L
41B
METRO
41C
H
41D
O
41E
NS
41F

D.
R
420
CON
421
T
422
Tengo
423
F
424
NS
425
C
426
H
427
NS
428
SCH
429
B
42A
NS
42B
B
42C
NS
42D
NS
42E
YO SOY
42F

MI.
a
430
B
431
v
432
GRAMO
433
D
434
mi
435
F
436
s
437
y
438
th
439
Para
43A
l
43B
metro
43C
norte
43D
O
43E
NS
43F

F.
R
440
con
441
T
442
a
443
F
444
NS
445
C
446
h
447
NS
448
SCH
449
B
44A
NS
44B
B
44C
NS
44D
NS
44E
yo soy
44F

Codificaciones estándar UNICODE

Unicode (Unicode inglés) es un estándar de codificación de caracteres que permite representar caracteres de casi todos los scripts del mundo y caracteres especiales. Los caracteres Unicode se codifican como enteros sin signo. Unicode tiene varias formas de representar caracteres en una computadora: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) y UTF-32 (UTF-32BE, UTF-32LE). (Formato de transformación Unicode en inglés - UTF).
UTF-8 Actualmente es una codificación muy extendida que ha encontrado una amplia aplicación en los sistemas operativos y el espacio web. El texto que consta de caracteres Unicode numerados menos de 128 (códigos de área U + 0000 a U + 007F) contiene los caracteres de marcación ASCII con los códigos correspondientes. A continuación se encuentran las áreas de caracteres de varios guiones, signos de puntuación y símbolos técnicos. Debajo de los caracteres cirílicos, se asignan áreas de caracteres con códigos de U + 0400 a U + 052F, de U + 2DE0 a U + 2DFF, de U + A640 a U + A69F.

Codificación UTF-8 es versátil y tiene una reserva impresionante para el futuro. Esto la convierte en la codificación más conveniente para su uso en Internet.

Antes de responder a la pregunta sobre qué es la codificación ANSI de Windows, primero respondamos a otra pregunta: "¿Qué es una codificación en general?"

Cada computadora, cada sistema utiliza un determinado conjunto de símbolos, que depende del idioma utilizado por el usuario, de su competencia profesional y preferencias personales.

Definición general de codificación

Entonces, en ruso, se usan 33 caracteres para denotar letras, en inglés - 26. Además, se usan 10 dígitos para contar (0; 1; 2; 3; 4; 5; 6; 7; 8; 9) y algunos caracteres, menos, espacio, punto, porcentaje, etc.

A cada uno de estos caracteres se le asigna un número secuencial mediante una tabla de códigos. Por ejemplo, a la letra "A" se le puede asignar el número 1; "Z" es 26 y así sucesivamente.

En realidad, un número que representa un carácter como un número entero se considera un código de carácter y, en consecuencia, una codificación es un conjunto de caracteres en dicha tabla.

Gran variedad de tablas de códigos

En este momento, hay una gran cantidad de codificaciones y tablas de códigos utilizadas por diferentes especialistas: este es ASCII, desarrollado en 1963 en Estados Unidos, y Windows-1251, que recientemente fue popular gracias a Microsoft, KOI8-R y Guobiao, y muchos, muchos otros, y el proceso de su aparición y extinción continúa hasta el día de hoy.

Entre esta enorme lista se encuentra la denominada codificación ANSI.

El hecho es que en un momento Microsoft creó un conjunto completo de páginas de códigos:

Todos ellos se conocen colectivamente como tabla de codificación ANSI o página de códigos ANSI.

Un dato interesante: una de las primeras tablas de códigos fue ASCII, creada en 1963 por el American National Standards Institute, abreviada como ANSI.

Entre otras cosas, esta codificación también contiene caracteres no imprimibles, las llamadas "secuencias de escape" o ESC, que son únicos para todas las tablas de caracteres y, a menudo, son incompatibles entre sí. Sin embargo, con un uso hábil, le permitieron ocultar y restaurar el cursor, moverlo de una posición en el texto a otra, establecer pestañas, borrar la parte de la ventana de terminal en la que estaba trabajando, cambiar el formato del texto en la pantalla y cambiar el color (¡o incluso dibujar y enviar señales de sonido!). En 1976, por cierto, fue una gran ayuda para los programadores. Por cierto, un terminal es un dispositivo necesario para ingresar y enviar información. En esos primeros días, era un monitor y un teclado conectados a una computadora (computadora electrónica).

Visualización incorrecta de símbolos

Desafortunadamente, en el futuro, dicho sistema causó numerosas fallas en los sistemas, mostrando los llamados krakozyabry en lugar de los poemas deseados, fuentes de noticias o descripciones de sus juegos de computadora favoritos. - conjuntos de caracteres ilegibles y sin sentido. La aparición de estos omnipresentes errores se debió simplemente a un intento de mostrar caracteres codificados en una tabla de códigos con otra.

La mayoría de las veces, todavía nos encontramos con las consecuencias de la lectura incorrecta de esta codificación en Internet, cuando nuestro navegador, por alguna razón, no puede determinar con precisión cuál de las codificaciones de Windows - **** se está utilizando en este momento, debido a la indicación del webmaster de codificación ANSI general o codificación inicialmente incorrecta, por ejemplo, 1252 en lugar de 1521. A continuación se muestra la tabla de codificación exacta.

Tabla de codificación cirílica ANSI, Windows-1251

Además, en 1986, ANSI se expandió significativamente, gracias a Ian E. Davis, quien escribió el paquete The Draw, que permite no solo usar las funciones básicas, desde nuestro punto de vista, sino también completamente (o casi completamente) para dibujar !

Resumiendo

Por lo tanto, puede ver que la codificación ANSI, de hecho, aunque fue una decisión bastante controvertida, conserva su posición.

Con el tiempo, con la mano ligera de los entusiastas, ¡el antiguo terminal ANSI migró incluso a los teléfonos!

Nuevo en el sitio

>

Más popular