unicode(7) Miscellaneous Information Manual unicode(7)
NOME
unicode - insieme universale di caratteri
DESCRIZIONE
Lo standard internazionale ISO/IEC 10646 definisce l'insieme universale
di caratteri (UCS: Universal Character Set). UCS contiene tutti i
caratteri di tutti gli altri standard per insiemi di caratteri.
Garantisce anche "compatibilita ad andata e ritorno", cioe e 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. Esso comprende non solo i
caratteri latino greco, cirillico, ebreo, arabo, armeno e georgiano, ma
anche alfabeti ideografici cinese, giapponese e coreano han, e i
caratteri hiragana, katakana, hangul, devanagari, bengali, gurmukhi,
gujarati, oriya, tamil, telugu, kannada, malayalam, thai, lao, khmer,
bopomofo, tibetano, runico, etiopico, canadese sillabico, cherokee,
mongolo, ogham, myanmar, sinhala, thaana, yi e altri. Per caratteri non
ancora inclusi la ricerca su come codificarli al meglio e ancora in
corso e prima o poi verranno aggiunti. Cio potrebbe includere non solo
geroglifici e vari linguaggi storici indo-europei, ma anche alcuni
caratteri artistici selezionati come tengwar, cirth e klingon. UCS
include anche un grande numero di simboli grafici, tipografici,
matematici e scientifici, inclusi quelli forniti da TeX, Postscript,
APL, MS-DOS, MS-Windows, Macintosh e font OCR, oltre a molti sistemi di
elaborazione testi e di editoria, e altri se ne stanno aggiungendo.
Lo standard UCS (ISO/IEC 10646) descrive una architettura di caratteri
a 31 bit consistente di 128 gruppi a 24 bit, ciascuno diviso in 256
piani a 16 bit, composti da 256 righe a 8 bit, con 256 colonne, una per
ciascun carattere. La parte 1 dello standard (ISO/IEC 10646-1)
definisce le prime 65534 posizioni (da 0x0000 a 0xfffd), che formano il
Piano Multi-linguistico di Base (BMP), ovvero il piano 0 del gruppo 0.
La parte 2 dello standard (ISO/IEC 10646-2) aggiunge caratteri al
gruppo 0 al di fuori del BMP in numerosi piani supplementari
nell'intervallo da 0x10000 a 0x10ffff. Non ci sono piani per l'aggiunta
di caratteri allo standard oltre 0x10ffff, quindi, dell'intero spazio
codice, solo una piccola frazione del gruppo 0 verra usata nel prossimo
futuro. Il BMP contiene tutti i caratteri che si trovano negli altri
insiemi di caratteri comunemente usati. I piani supplementari aggiunti
da ISO/IEC 10646-2 coprono solo caratteri esotici per speciali bisogni
scientifici, stampa dizionario, industria editoriale, protocolli di
livello piu elevato, e entusiasti.
La rappresentazione di ciascun carattere UCS come parola di 2 byte e
chiamato forma UCS-2 (solo per i caratteri BMP), mentre UCS-4 e la
rappresentazione di ciascun carattere in una parola a 4 byte. In
aggiunta esistono due forme di codifica UTF-8 per retrocompatibilita
col software di elaborazione ASCII e UTF-16 per la gestione della
retrocompatibilita dei caratteri non BMP fino a 0x10ffff del software
UCS-2.
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/IEC 8859-1 (Latin-1).
Caratteri combinanti
Some code points in UCS have been assigned to combining characters.
These are similar to the nonspacing accent keys on a typewriter. A
combining character just adds an accent to the previous character. The
most important accented characters have codes of their own in UCS;
however, the combining character mechanism allows us to add accents and
other diacritical marks to any character. The combining characters
always follow the character which they modify. For example, the German
character Umlaut-A ("Latin capital letter A with diaeresis") can either
be represented by the precomposed UCS code 0x00c4, or alternatively as
the combination of a normal "Latin capital letter A" followed by a
"combining diaeresis": 0x0041 0x0308.
I caratteri combinanti sono essenziali per esempio nella codifica dei
caratteri Thai o per la composizione matematica e per gli utenti
dell'alfabeto internazionale fonetico.
Livelli di implementazione
Siccome non ci si aspetta che tutti i sistemi possano supportare
meccanismi avanzati come i caratteri combinanti, ISO/IEC 10646-1
specifica tre livelli d'implementazione per UCS:
Livello 1
I caratteri combinanti e Hangul Jamo (una variante della
codifica dell'alfabeto coreano, dove le sillabe Hangul sono
codificate come tripletta o coppia di codici
vocale/consonante) non sono supportati.
Livello 2
Come il livello 1, ma alcuni caratteri combinanti sono
permessi in alcuni alfabeti (per es., tailandese, laotiano,
ebraico, arabo, devangari, malese).
Livello 3
Tutti i caratteri UCS sono supportati.
Lo Standard Unicode 3.0 pubblicato dall'Unicode Consortium contiene
esattamente il piano multi-linguistico di base UCS al livello 3
d'implementazione, come descritto in ISO/IEC 10646-1:2000. Unicode 3.1
ha aggiunto i piani supplementari dell'ISO/IEC 10646-2. Lo standard
Unicode e i rapporti tecnici pubblicati dall'Unicode Consortium
forniscono molte informazioni aggiuntive sulla semantica e sugli usi
raccomandati dei vari caratteri. Essi forniscono linee guida e
algoritmi per editing, ordinamento, comparazione, normalizzazione,
conversione e visualizzazione delle stringhe Unicode.
Unicode sotto Linux
Sotto GNU/Linux, il tipo C wchar_t e un tipo intero 32-bit con segno. I
suoi valori sono sempre interpretati dalla libreria C come valori del
codice UCS (in tutte le localizzazioni), una convenzione che e
segnalata alle applicazioni dalla libreria C di GNU definendo la
costante __STDC_ISO_10646__ come specificato nello standard ISO C99.
UCS/Unicode puo essere usato come semplice ASCII nei flussi
input/output, comunicazioni tra terminali, file di testo, nomi file e
variabili d'ambiente nella codifica multi-byte .B UTF-8 compatibile
ASCII. Per segnalare l'uso di UTF-8 come codifica carattere a tutte le
applicazioni deve venire selezionata una localizzazione appropriata
attraverso variabili d'ambiente (es., "LANG=en_GB.UTF-8").
La funzione nl_langinfo(CODESET) restituisce il nome della codifica
selezionata. Le funzioni di libreria come wctomb(3) e mbsrtowcs(3)
possono essere usate per trasformare i caratteri interni e le stringhe
wchar_t nella codifica dei caratteri di sistema e viceversa e
wcwidth(3) dice di quante posizioni (0-2) il cursore viene avanzato
dall'output di un carattere.
Aree di uso privato (PUA)
L'intervallo da 0xe000 a 0xf8ff nel Piano multi-linguistico di base,
non verra mai assegnato dallo standard a nessun carattere ed e
riservato per uso privato. Per la comunita Linux questo intervallo e
stato ulteriormente suddiviso nell'intervallo da 0xe000 a 0xefff, che
puo essere usato dall'utente finale, e nell'area Linux nell'intervallo
da 0xf000 a 0xf8ff, le cui estensioni sono coordinate fra tutti gli
utenti di Linux. Il registro dei caratteri assegnati all'area Linux e
al momento mantenuto da LANANA e il registro stesso e
Documentation/admin-guide/unicode.rst nei sorgenti del kernel Linux (o
Documentation/unicode.txt prima di Linux 4.10).
Altri due piani sono riservati per uso privato, il piano 15
(Supplementary Private Use Area-A, intervallo da 0xf0000 a 0xffffd) e
il piano 16 (Supplementary Private Use Area-B, intervallo da 0x100000 a
0x10fffd).
Bibliografia
o Information technology -- Universal Multiple-Octet Coded Character
Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO/IEC 10646-1, International Organization
for Standardization, Geneva, 2000.
Questa e la specifica ufficiale di UCS. Disponibile su
.
o The Unicode Standard, Version 3.0. The Unicode Consortium,
Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.
o S. Harbison, G. Steele. C: A Reference Manual. Fourth edition,
Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Un buon testo di riferimento sul linguaggio di programmazione C. La
quarta edizione comprende l'Emendamento 1 del 1994 allo standard ISO
C90, che aggiunge un buon numero di funzioni di libreria C per
gestire codifiche di caratteri lunghi e multibyte, ma non comprende
ancora la ISO C99, che ha migliorato ulteriormente il supporto per i
caratteri lunghi e multibyte.
o Unicode Technical Reports.
o Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
o Bruno Haible: Unicode HOWTO.
VEDERE ANCHE
locale(1), setlocale(3), charsets(7), utf-8(7)
TRADUZIONE
La traduzione italiana di questa pagina di manuale e stata creata da
Ottavio G. Rizzo , Giulio Daprela
, Elisabetta Galli , Marco Curreli
e Giuseppe Sacco
Questa traduzione e documentazione libera; leggere la GNU General
Public License Versione 3 o
successiva per le condizioni di copyright. Non ci assumiamo alcuna
responsabilita.
Per segnalare errori nella traduzione di questa pagina di manuale
inviare un messaggio a .
Linux man-pages 6.12 22 gennaio 2025 unicode(7)