stringtranslate.com

GSM 03.38

En telefonía móvil, GSM 03.38 o 3GPP 23.038 es una codificación de caracteres utilizada en redes GSM para SMS (Short Message Service), CB ( Cell Broadcast ) y USSD (Unstructured Supplementary Service Data). El estándar 3GPP TS 23.038 (originalmente la recomendación GSM 03.38) define el alfabeto GSM predeterminado de 7 bits que es obligatorio para los teléfonos móviles y elementos de red GSM, [1] pero el conjunto de caracteres es adecuado solo para inglés y varios idiomas de Europa occidental. Los idiomas como el chino, el coreano o el japonés deben transferirse utilizando la codificación de caracteres UCS-2 de 16 bits. Un número limitado de idiomas, como el portugués , el español , el turco y varios idiomas utilizados en la India escritos con escrituras brahmicas pueden utilizar la codificación de 7 bits con la tabla de cambio de idioma nacional definida en 3GPP 23.038. Para mensajes binarios , se utiliza la codificación de 8 bits.

Alfabeto GSM de 7 bits predeterminado y tabla de extensión de 3GPP TS 23.038 / GSM 03.38

La codificación estándar para los mensajes GSM es el alfabeto predeterminado de 7 bits, tal como se define en la recomendación 23.038.

Los caracteres de siete bits deben codificarse en octetos siguiendo uno de los tres modos de empaquetado:

Es importante (especialmente cuando se va a segmentar un mensaje utilizando el mecanismo de SMS concatenado ) que los caracteres de la tabla del conjunto de caracteres básicos ocupen un septeto y los caracteres de la tabla de extensión del conjunto de caracteres básicos ocupen dos septetos.

Tenga en cuenta que la segunda parte de la tabla solo es accesible si el dispositivo GSM admite el mecanismo de extensión de 7 bits, utilizando el prefijo del carácter ESC. De lo contrario, el código ESC en sí se interpreta como un espacio y el carácter siguiente se tratará como si no hubiera ningún código ESC inicial.

La mayor parte de la parte alta de la tabla no se utiliza en el conjunto de caracteres predeterminado, pero el estándar GSM define algunos indicadores de código de idioma que permiten al sistema identificar variantes nacionales de esta parte, para admitir más caracteres que los que se muestran en la tabla anterior.

En un mensaje de texto GSM estándar, todos los caracteres se codifican utilizando unidades de código de 7 bits, empaquetadas juntas para llenar todos los bits de los octetos. Así, por ejemplo, el sobre de 140 octetos de un SMS [3] , sin ningún otro indicador de idioma excepto solo el prefijo de clase estándar, puede transportar hasta (140*8)/7=160, es decir, 160 caracteres GSM de 7 bits (pero tenga en cuenta que el código ESC cuenta como uno de ellos, si se utilizan caracteres en la parte superior de la tabla).

Se pueden enviar mensajes más largos, pero requerirán un prefijo de continuación y un número de secuencia en los mensajes SMS posteriores (estos bytes de prefijo y número de secuencia se cuentan dentro de la longitud máxima de la carga útil de 140 octetos del formato de sobre).

Cuando hay entre 1 y 6 bits de repuesto en el último octeto de un mensaje, estos bits se ponen a cero (estos bits no cuentan como un carácter, sino solo como relleno). Cuando hay 7 bits de repuesto en el último octeto de un mensaje, estos bits se ponen al código de 7 bits del control CR (también se utiliza como relleno) en lugar de ponerse a cero (donde se confundirían con el código de 7 bits de un carácter '@').

Esta codificación de 7 bits permite el transporte de textos que consisten en caracteres imprimibles del latín básico (bloque Unicode) (con la excepción del acento grave/acento invertido), así como algunos caracteres del conjunto de caracteres ISO Latin 1. También permite la codificación de textos escritos en el alfabeto griego, pero solo en mayúsculas; para tal uso en griego, las letras mayúsculas latinas que se parecen a las letras griegas se reutilizan con el mismo código, de modo que el conjunto de caracteres anterior está completo solo para el griego monótono moderno restringido a letras mayúsculas. Un soporte completo para el alfabeto griego (incluidas las letras minúsculas) requiere una versión nacional de la tabla desplazada de 7 bits (utilizando el código ESC para cada carácter nacional codificado en esta tabla desplazada), o una codificación propietaria de 8 bits no especificada, o el uso de la codificación UCS-2 (ver más abajo).

Tenga en cuenta que el código especial marcado SS2 en la tabla anterior también se ha asignado (y codificado como 0x1B,0x1B) para permitir el uso de otra tabla de desplazamiento de 7 bits alternativa. Pero este mecanismo nunca se ha utilizado y se ha preferido la codificación UCS-2.

Téngase en cuenta que el carácter 0x09 ( Ç , C mayúscula con cedilla) debe reemplazarse por ç (c minúscula con cedilla) en la implementación moderna, como lo recomienda Unicode, [4] ya que la versión en mayúsculas es de poca utilidad.

Codificación de datos GSM de 8 bits

El modo de codificación de datos de 8 bits trata la información como datos sin procesar. Según el estándar, el alfabeto para esta codificación es específico del usuario.

Codificación UCS-2

Esta codificación permite el uso de una mayor variedad de caracteres e idiomas. UCS-2 puede representar los caracteres latinos y orientales más utilizados a costa de un mayor gasto de espacio. Estrictamente hablando, UCS-2 está limitado a caracteres en el Plano Multilingüe Básico . Sin embargo, dado que los entornos de programación modernos no proporcionan codificadores o decodificadores para UCS-2, algunos teléfonos móviles (por ejemplo, iPhones ) utilizan UTF-16 en lugar de UCS-2. [5] Esto funciona, porque para los caracteres en el Plano Multilingüe Básico (incluidos los alfabetos completos de la mayoría de los idiomas humanos modernos) las codificaciones UCS-2 y UTF-16 son idénticas. Para codificar caracteres fuera del BMP (inalcanzables en UCS-2 simple), como Emoji , UTF-16 utiliza pares sustitutos , que cuando se decodifican con UCS-2 aparecerían como dos puntos de código válidos pero no mapeados .

Un solo mensaje SMS GSM que utilice esta codificación puede tener como máximo 70 caracteres (140 octetos).

Tenga en cuenta que en muchos teléfonos móviles GSM no existe una preselección específica de la codificación UCS-2. El valor predeterminado es utilizar la codificación de 7 bits descrita anteriormente, hasta que se introduce un carácter que no está presente en la tabla de 7 bits GSM (por ejemplo, la "a" minúscula con á). En ese caso, todo el mensaje se vuelve a codificar utilizando la codificación UCS-2 y la longitud máxima del mensaje enviado en un único SMS se reduce inmediatamente a 70 caracteres, en lugar de 160. Otros varían en función de la elección y configuración de la aplicación SMS y de la longitud del mensaje [ cita requerida ] .

Para evitar costes inesperados para los remitentes que tienen una suscripción a un paquete limitado de SMS enviados, las aplicaciones deberían [ ¿según quién? ] mostrar el número de caracteres utilizados y el número máximo de caracteres en el SMS compuesto. Cuando un mensaje excede este máximo, el mensaje se [ aclaración necesaria ] enviará como múltiples SMS sucesivos que contienen partes del mensaje (cada una de ellas contiene un número de secuencia, que también utiliza algunos caracteres iniciales en cada parte); estas partes están destinadas a ser [ cita requerida ] reensambladas más tarde por el destinatario.

Algunas aplicaciones alertan al usuario cuando es necesario dividir un mensaje o incluso envían un mensaje más largo como mensaje multimedia (MMS).

Tablas de cambios de idioma nacionales

Desde la versión 8 del estándar 3GPP 23.038 de marzo de 2008, se puede acceder a conjuntos de caracteres adicionales mediante el uso de tablas de cambio de idioma nacional.

Estas tablas permiten utilizar diferentes conjuntos de caracteres según el idioma en el que se va a escribir el texto. La elección de la tabla para un mensaje determinado se selecciona en la sección Encabezado de datos de usuario de un mensaje SMS y se puede especificar para todo el texto (una tabla de desplazamiento con bloqueo que reemplaza la tabla del alfabeto predeterminado de 7 bits GSM estándar) o para un solo carácter ( una tabla de desplazamiento simple que reemplaza la tabla de extensión del alfabeto predeterminado de 7 bits GSM). Es posible utilizar juntas las tablas de desplazamiento con bloqueo y de desplazamiento simple en el mismo mensaje si se deben reemplazar tanto la tabla del alfabeto predeterminado estándar como la tabla de extensión del alfabeto predeterminado.

Si se utiliza una tabla de desplazamiento, un mensaje puede seguir utilizando una codificación de 7 bits para los caracteres, pero se puede elegir un conjunto diferente para mostrar correctamente los caracteres acentuados y específicos del idioma. Esto permite hasta 155 caracteres, codificados en 136 octetos (140 octetos, menos los 4 octetos del encabezado de datos del usuario necesarios para indicar el uso de una tabla de desplazamiento y el código de idioma). Con las tablas de desplazamiento simple y con bloqueo , se permiten hasta 152 caracteres, codificados en 133 octetos (140 octetos, menos los 7 octetos del encabezado de datos del usuario ).

Los caracteres de cualquier tabla de desplazamiento de bloqueo toman un septeto, los caracteres de la tabla de desplazamiento simple (o tabla de extensión del conjunto de caracteres básicos) toman dos septetos.

Inicialmente, las tablas de turnos solo se especificaron para turco; el español y el portugués se agregaron en revisiones posteriores de la versión 8. La versión 9 introdujo 10 idiomas utilizados en la India escritos con escrituras brahmáticas (bengalí, gujarati, hindi, kannada, malabar, oriya, punjabi, tamil, telugu) y urdu .

Todavía no existe una tabla de cambio de idioma nacional definida para francés, griego, ruso, búlgaro, árabe, hebreo y la mayoría de los idiomas de Europa Central que necesitan una cobertura mejor que el conjunto de caracteres estándar predeterminado de 7 bits y su conjunto de caracteres de extensión predeterminado de 7 bits: si alguna vez se compone algún carácter que no se puede representar en esos conjuntos de 7 bits GSM predeterminados, el mensaje se recodificará automáticamente utilizando UCS-2, con el efecto de dividir por más de dos la longitud máxima en caracteres de los mensajes que se pueden enviar al precio de un solo SMS (cuando un mensaje se divide en varias partes, se necesitan algunos otros octetos en el encabezado de datos de usuario para indicar el número de secuencia de cada parte).

Aunque una revisión de GSM 03.38 (ya en la versión 4.0.1 de septiembre de 1994) definió valores de esquema de codificación de datos para el sistema de difusión celular (CBS) para alemán, inglés, italiano, francés, español, holandés, sueco, danés, finlandés, noruego, griego y turco; con húngaro, polaco, checo, hebreo, árabe, ruso e islandés añadidos en revisiones posteriores, no se definieron tablas de codificación para estos idiomas. El propósito de este campo era puramente identificar el idioma del mensaje.

Tampoco existe una tabla de desplazamiento de idioma para el japonés escrito en kanas básicos, ni para el coreano escrito en hangul jamos, ni para el chino escrito en alfabeto han. Esto no suele ser un problema en Japón, porque utiliza otros estándares distintos de GSM y WAP para la mensajería. Los otros dos idiomas también tienen demasiados caracteres distintos para caber en una tabla de desplazamiento de 7 bits.

Lengua española (alfabeto latino)

No existe un conjunto de caracteres de bloqueo de mayúsculas específico para el idioma español. Se utiliza el conjunto de caracteres básico predeterminado.

Lengua portuguesa (alfabeto latino)

Lengua turca (alfabeto latino)

Lengua urdu (escrituras árabe y latina básica)

También puede usarse para el idioma sindhi escrito también en escritura árabe.

A veces también se puede utilizar para el idioma árabe , pero los dígitos orientales (codificados aquí en su variante persa-hindú) no se utilizarán en ese caso porque el árabe estándar prefiere sus dígitos árabes orientales tradicionales y con frecuencia se reemplazarán por dígitos árabes occidentales (codificados en el conjunto de caracteres de bloqueo de desplazamiento en la columna 0x30) que también se utilizan ahora con frecuencia en urdu. Sin embargo, en la India, los teléfonos que reconocen la indicación del idioma árabe pueden sustituir las variantes persa-hindú de los dígitos árabes orientales por los dígitos árabes orientales tradicionales.

Lengua hindi (devanagari y escritura latina básica)

Lenguas bengalí y asamés (escrituras bengalí y latina básica)

Lengua punjabi (gurmukhī y escritura latina básica)

Lengua gujarati (escrituras gujarati y latinas básicas)

Lengua oriya (Oriya y escritura latina básica)

Lengua tamil (Tamil y escritura latina básica)

Lengua telugu (telugu y escritura latina básica)

Lengua kannada (kannada y escritura latina básica)

Lengua malayalam (malayalam y escritura latina básica)

Véase también

Referencias

  1. ^ 3GPP TS 23.038, Alfabetos e información específica del idioma.
  2. ^ abcdefghijklmnopqrstu vwxyz aa ab Alfabetos e información específica del idioma (3G TS 23.038 versión 12.0.0) (archivo .doc comprimido), ETSI, septiembre de 2014.
  3. ^ "Los mensajes de texto [...] contienen hasta 140 octetos." en 3GPP TS 23.040 Realización técnica del Servicio de Mensajes Cortos (SMS)
  4. ^ GSM 03.38 a Unicode GSM 03.38 a Unicode
  5. ^ Chad Selph (8 de noviembre de 2012). "Aventuras en SMS Unicode". Twilio. Archivado desde el original el 8 de septiembre de 2015. Consultado el 28 de agosto de 2015 .

Enlaces externos