Quali codifiche di caratteri sono supportate da posix?


11

POSIX definisce il comportamento di strumenti come grep, awk, sed, ecc, che opera contro i file di testo. Poiché si tratta di un file di testo, penso che ci siano problemi nella codifica dei caratteri.

Domanda:

  • Quali sono le codifiche dei caratteri supportate da POSIX? (o, file di testo di quale codifica può essere gestita dai sistemi compatibili con POSIX?)

Risposte:


19

Non esiste una codifica di caratteri specifici obbligatoria per POSIX. L'unico carattere in una posizione fissa è null, che deve essere 00.

Ciò che POSIX richiede è che esistano tutti i caratteri del suo set di caratteri portatile . Il set di caratteri portatile contiene i caratteri ASCII stampabili, spazio, BEL, backspace, tabulazione, ritorno a capo, newline, tab verticale, avanzamento modulo e null. Dove o come questi sono codificati non è specificato, tranne che:

  • Sono tutti un singolo byte (8 bit).
  • Null è rappresentato con tutti i bit zero.
  • Le cifre da 0 a 9 compaiono in modo contiguo in quell'ordine.

Non impone altre restrizioni alla rappresentazione dei personaggi, quindi un sistema conforme è libero di supportare le codifiche con qualsiasi rappresentazione di quei personaggi e qualsiasi altro personaggio in aggiunta.

Impostazioni locali diverse sullo stesso sistema possono avere rappresentazioni diverse di tali caratteri, ad eccezione di .e /, e

se un'applicazione utilizza una coppia di impostazioni locali in cui le codifiche dei caratteri differiscono o accede ai dati da un'applicazione utilizzando un'impostazione internazionale con codifiche diverse dalle impostazioni locali utilizzate dall'applicazione, i risultati non sono specificati.

Gli unici file che tutti i sistemi conformi a POSIX sono tenuti a trattare allo stesso modo sono file costituiti interamente da byte null. I file trattati come testo hanno le loro linee terminate dalla rappresentazione della codifica del carattere newline del PCS .


5

Lo standard POSIX introduce una locale POSIX, che ha lo stesso ordine del set di caratteri ASCII per i caratteri in ASCII (Definizioni di base POSIX §7.3.2).

Inoltre, sui sistemi in cui POSIX2_LOCALEDEFè definita la costante simbolica (che deve essere definita per i sistemi conformi a XSI e che può essere testata tramite getconf POSIX2_LOCALEDEF), il sistema supporta la creazione di nuove impostazioni locali, utilizzando l' localedefutilità e le definizioni delle impostazioni locali specificate in POSIX Base Definizioni §7.3.

Le definizioni delle impostazioni internazionali POSIX non supportano la specifica dei caratteri in base al loro valore Unicode, esistono standard più recenti, come ISO / IEC TR 14652 (disponibile nella casa ISO / IEC JTC1 / SC22 / WG20 ) e ISO TR 30112 (bozza disponibile nella ISO / IEC JTC1 / SC35 / WG5 home ) che oscura ISO / IEC TR 14652.

Altri standard correlati sono ISO 14651 (disponibile nel sito ISO ITTF ) e Unicode Collation Algorithm (UCA, Unicode UTS # 10) .

Il modulo Unicode :: Tussle Perl di CPAN include le riscritture Unicode di diverse utility Unix. Gli script sed e awk e one-liner possono (relativamente facilmente) essere riscritti in Perl per il supporto Unicode.

Per glibc, le voci bugzilla per i componenti localedata possono fornire una vista dello stato delle diverse localizzazioni.


3
Si noti che l'ordinamento delle impostazioni internazionali POSIX definisce l' ordine di confronto che corrisponde a ASCII, anziché la rappresentazione della codifica effettiva.
Michael Homer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.