¿Qué codificaciones de caracteres son compatibles con posix?

11

POSIX define el comportamiento de herramientas tales como grep, awk, sed,, etc, que trabajan contra los archivos de texto. Como se trata de un archivo de texto, creo que existen los problemas de codificación de caracteres.

Pregunta:

  • ¿Cuáles son las codificaciones de caracteres compatibles con POSIX? (¿o archivos de texto de qué codificación pueden manejar los sistemas compiladores POSIX?)
Yuki Inoue
fuente

Respuestas:

19

No existe una codificación de caracteres específica exigida por POSIX. El único carácter en una posición fija es nulo, que debe ser 00.

Lo que POSIX requiere es que existan todos los caracteres de su juego de caracteres portátil . El juego de caracteres portátil contiene los caracteres ASCII imprimibles, espacio, BEL, retroceso, tabulación, retorno de carro, nueva línea, tabulación vertical, avance de formulario y nulo. No se especifica dónde ni cómo se codifican esos, excepto que:

  • Todos son un solo byte (8 bits).
  • Nulo se representa con todos los bits cero.
  • Los dígitos 0-9 aparecen contiguos en ese orden.

No impone otras restricciones a la representación de los caracteres, por lo que un sistema conforme es libre de admitir codificaciones con cualquier representación de esos caracteres y cualquier otro carácter adicional.

Diferentes configuraciones regionales en el mismo sistema pueden tener diferentes representaciones de esos caracteres, con la excepción de .y /, y

Si una aplicación usa cualquier par de configuraciones regionales donde las codificaciones de caracteres difieren, o accede a los datos de una aplicación utilizando una configuración regional que tiene diferentes codificaciones de las configuraciones regionales utilizadas por la aplicación, los resultados no se especifican.

Los únicos archivos que todos los sistemas compatibles con POSIX deben tratar de la misma manera son archivos que consisten completamente en bytes nulos. Los archivos tratados como texto tienen sus líneas terminadas por la representación de la codificación del carácter de nueva línea del PCS .

Michael Homer
fuente
5

El estándar POSIX presenta una configuración regional POSIX, que tiene el mismo orden que el conjunto de caracteres ASCII para los caracteres en ASCII (Definiciones básicas POSIX §7.3.2).

Además de eso, en los sistemas donde POSIX2_LOCALEDEFse define la constante simbólica (que se definirá para los sistemas conformes a XSI y se puede probar a través de getconf POSIX2_LOCALEDEF), el sistema admite la creación de nuevas configuraciones regionales, utilizando la localedefutilidad y las definiciones de configuración regional como se especifica en POSIX Base Definiciones §7.3.

Las definiciones locales de POSIX no admiten la especificación de caracteres por su valor Unicode, hay estándares más nuevos, como ISO / IEC TR 14652 (disponible en el hogar ISO / IEC JTC1 / SC22 / WG20 ) e ISO TR 30112 (borrador disponible en el ISO / IEC JTC1 / SC35 / WG5 home ) que obsoleta ISO / IEC TR 14652.

Otros estándares relacionados son ISO 14651 (disponible en el sitio ISO ITTF ) y el Algoritmo de clasificación Unicode (UCA, Unicode UTS # 10) .

El módulo Unicode :: Tussle Perl en CPAN incluye reescrituras Unicode de varias utilidades Unix. Los scripts de sed y awk y los one-liners pueden reescribirse (con relativa facilidad) en Perl para el soporte Unicode.

Para glibc, las entradas de bugzilla para los datos locales del componente pueden proporcionar una vista del estado de las diferentes configuraciones regionales.

ninjalj
fuente
3
Tenga en cuenta que el orden regional POSIX define el orden de clasificación que coincide con ASCII, en lugar de la representación de codificación real.
Michael Homer