Modos de codificación

También se llama: modos de datos, modo numérico, modo alfanumérico, modo de bytes, modo kanji, encoding modes

Definición

Los modos de codificación son las formas en que un código QR empaqueta los caracteres en bits. Los cuatro modos principales son numérico, alfanumérico, de bytes y kanji, y un mismo código puede cambiar de uno a otro.

Los cuatro modos principales

Cada modo cambia variedad de caracteres por densidad. El modo numérico solo maneja dígitos, pero empaqueta tres en 10 bits, mientras que el modo de bytes maneja cualquier byte pero gasta 8 bits en cada uno.

El modo alfanumérico abarca un conjunto de 45 caracteres: los dígitos 0–9, las letras mayúsculas A–Z, el espacio y los símbolos $ % * + - . / y los dos puntos. Las letras minúsculas no están en el conjunto, y por eso una URL toda en mayúsculas puede dar un código más pequeño que la misma URL en minúsculas.

  • Numérico: dígitos 0–9, 10 bits por cada 3 dígitos
  • Alfanumérico: 45 caracteres, 11 bits por cada 2 caracteres
  • Bytes: cualquier valor de 8 bits, 8 bits por byte
  • Kanji: caracteres de doble byte Shift JIS, 13 bits cada uno

Indicadores de modo y segmentos

Cada tramo de datos empieza con un indicador de modo de 4 bits y un recuento de caracteres, cuya longitud depende del modo y de la versión. Un código puede contener varios segmentos así, por ejemplo numérico para una tira larga de dígitos y de bytes para el resto, lo que puede hacer el resultado más pequeño.

Otros indicadores de 4 bits señalan funciones y no juegos de caracteres: ECI para declarar una codificación de caracteres, structured append para repartir los datos entre varios códigos y FNC1 para GS1 y otros formatos de datos de la industria. Un terminador de cuatro bits a cero pone fin a los datos.

  • Numérico 0001, alfanumérico 0010, bytes 0100, kanji 1000
  • ECI 0111, structured append 0011
  • FNC1 en primera posición 0101, en segunda posición 1001
  • Terminador 0000

Modo de bytes y juegos de caracteres

La interpretación por defecto del estándar para el modo de bytes es ISO-8859-1 (Latin-1), pero la mayoría de los generadores actuales escriben UTF-8 para que sobrevivan las letras con acentos, otros alfabetos y los emojis. Los lectores suelen detectar UTF-8 examinando los bytes.

Cuando el juego de caracteres tiene que ser inequívoco, una cabecera ECI puede declararlo de forma explícita. Sin ella, un lector puede equivocarse de vez en cuando al adivinar y mostrar caracteres ininteligibles.

Preguntas frecuentes

¿Por qué mi código QR es más grande con letras minúsculas?

Las minúsculas no están en el conjunto alfanumérico, así que el texto tiene que usar el modo de bytes con 8 bits por carácter en lugar de 5,5. Las mayúsculas, los dígitos y unos pocos símbolos se empaquetan mejor.

¿Puede un código QR guardar emojis o texto en alfabetos no latinos?

Sí, en modo de bytes con UTF-8, que admiten la mayoría de los generadores y de los lectores de móvil. Cada uno de esos caracteres ocupa varios bytes, así que la capacidad baja.

¿Puede un código QR mezclar datos numéricos y texto?

Sí. Los datos se pueden dividir en segmentos, cada uno con su propio modo, y los buenos codificadores eligen la división que da el código más pequeño.

Fuentes y estándares

Todos los términos