|
UNICODE(7) manual page
Table of Contents
Unicode - il super insieme di caratteri unificato a 16 bit
Lo standard internazionale ISO 10646 definisce l' Insieme universale di
caratteri (Universal Character Set). UCS contiene tutti i caratteri di
tutti gli altri standard per insiemi di caratteri. Garantisce anche compatibilità
ad andata e ritorno, cioè è possibile costruire tavole di conversione
in modo tale da non perdere nessuna informazione passando da una qualsiasi
altra codifica a UCS e viceversa.
UCS contiene i caratteri necessari alla
rappresentazione di praticamente tutte le lingue conosciute. A parte le
numerose lingue che fanno uso di estensioni dell'alfabeto romano, è possibile
rappresentare anche i seguenti alfabeti e lingue: greco, cirillico, ebraico,
arabo, armeno, gregoriano, giapponese, cinese, hiragana, katakana, coreano,
hangul, devangari, bengalese, gurmuco, gugiarato, oriya, tamil, telugu,
kannada, malese, tailandese, laotiano, bopomofo e numerosi altri. Si sta
lavorando per aggiungere alfabeti come tibetano, khmer, runico, etiope,
geroglifici, varie lingue indo-europee ed altri. Non era ben chiaro come
codificare molti di questi ultimi alfabeti, quando lo standard è stato
pubblicato nel 1993. In aggiunta ai caratteri richiesti da questi alfabeti,
sono stati inclusi anche un gran numero di simboli grafici, tipografici,
matematici e scientifici come quelli di TeX, PostScript, MS-DOS, Macintosh,
Televideo, OCR (riconoscimento ottico dei caratteri) e di altri sistemi
di elaborazione testi; e infine tutti quei codici speciali necessari a
garantire una compatibilità ad andata e ritorno per tutti gli standard
esistenti per insiemi di caratteri.
Lo standard UCS (ISO 10646) descrive
un'architettura di caratteri a 31 bit; però, a tutt'oggi, solo le prime
65534 posizioni (da 0x0000 a 0xfffd), chiamate Piano Multi-linguistico
di Base (Basic Multilingual Plane), sono state assegnate a caratteri,
e ci si aspetta che solo caratteri particolarmente esotici destinati a
scopi scientifici particolari (geroglifici, per esempio) vengano in futuro
sistemate al di fuori di questo BMP a 16 bit.
I caratteri UCS nelle posizioni
da 0x0000 a 0x007f coincidono con quelli classici di US-ASCII e i caratteri
da 0x0000 a 0x00ff coincidono con quelli dell'insieme ISO 8859-1 Latin-1.
Alcuni codici di UCS sono stati assegnati a caratteri
combinanti. Simile ad un tasto accentato che non avanza in una macchina
da scrivere, un carattere combinante aggiunge un accento al carattere
precedente. I caratteri accentati più importanti hanno un loro posto in
UCS, ma questo meccanismo permette di aggiungere accenti a altri segni
diacritici a qualsiasi carattere. I caratteri combinanti seguono sempre
il carattere che modificano. Ad esempio, il carattere tedesco Ä («A maiuscola
romana con dieresi») può essere rappresentato sia col codice UCS precomposto
0x00c4, oppure come combinazione di una normale «A maiuscola romana» seguita
da una «dieresi combinante»: 0x0041 0x0308.
Siccome non ci si aspetta che tutti i sistemi possano supportare meccanismi
avanzati come i caratteri combinanti, ISO 10646 specifica tre livelli
d'implementazione per UCS:
- Livello 1
- I caratteri combinanti e Jamo Hangul
(una codifica speciale e più complicata dell'alfabeto coreano, dove le
sillabe Hangul sono rappresentate con due o tre sotto-caratteri) non sono
supportati.
- Livello 2
- Come il livello 1, ma alcuni caratteri combinanti
sono permessi in alcuni alfabeti (per es., ebraico, arabo, devangari, bengalese,
gurmuco, gugiarato, oriya, tamil, telugo, kannada, malese, tailandese
e laotiano).
- Livello 3
- Tutti i caratteri UCS sono supportati.
Lo standard
Unicode 1.1 pubblicato dal Consorzio Unicode contiene esattamente il piano
multi-linguistico di base ICS al livello 3 d'implementazione, come descritto
in ISO 10646. Unicode 1.1 aggiunge pure alcune definizioni semantiche alle
definizioni ISO 10646 di certi caratteri.
Al momento,
in Linux bisognerebbe usare l' BMP solo al livello 1 d'implementazione,
al fine di mantenere la complessità d'implementazione dei caratteri combinanti
al minimo. I livelli superiori d'implementazione sono adatti a formati speciali
di elaborazione testi, ma non come insieme generico di caratteri di sistema.
Il tipo di C wchar_t è in Linux di tipo unsigned integer a 16 bit e i
suoi valori vengono interpretati come codici BMP di livello 1 UCS.
L'impostazione
del locale specifica se la codifica di carattere del sistema è ad esempio
UTF-8 o ISO 8859-1. Funzioni di libreria come wctomb, mbtowc, o wprintf possono
essere usate per trasformare i caratteri interni wchar_t e le stringhe
nella di carattere del sistema e viceversa.
L'intervallo da
0xe000 a 0xf8ff nel BMP, non verrà mai assegnato dallo standard a nessun
carattere ed è riservato per uso privato. Nella comunità Linux, questo
intervallo è stato a suo volta suddiviso tra l'intervallo da 0xe000 a 0xefff,
che può essere usato dall'utente finale, e l'intervallo da 0xf000 a 0xf8ff,
le cui estensioni sono coordinate fra tutti gli utenti di Linux. Il registro
dei caratteri assegnati all'area Linux è al momento mantenuto da H. Peter
Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. Contiene alcuni caratteri
grafici DEC VT100 che mancano in Unicode, dà accesso diretto al buffer
di caratteri della console e contiene i caratteri usati da alcuni alfabeti
come quello Klingon.
* Information technology - Universal
Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic
Multilingual Plane. International Standard ISO 10646-1, International Organization
for Standardization, Geneva, 1993.
Questa è la definizione ufficiale di
UCS. Piuttosto ufficiale, piuttosto voluminosa, piuttosto cara. Per informazioni
su come ordinare, contattare www.iso.ch
- *
- The Unicode Standard - Worldwide
Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading,
MA, 1991.
È già disponibile Unicode 1.1.4. Le modifiche al libro sulla versione
1.0 sono disponibili da ftp.unicode.org Unicode 2.0 sarà nuovamente pubblicato
come libro nel 1996.
- *
- S. Harbison, G. Steele. C - A Reference Manual. Fourth
edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Un ottimo
libro di referenza sul linguaggio C. La quarta edizione copre il primo
emendamento del 1994 allo standard ISO C (ISO/IEC 9899:1990) che aggiunge
un gran numero di nuove funzioni di libreria C per maneggiare caratteri
multi-byte.
Al momento in cui questa pagina di manuale è stata scritta,
il supporto della libc di Linux per era ben lungi dall'essere completo.
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
utf-8(7)
Table of Contents
|