unicode(7)

NOME
unicode - insieme universale di caratteri

DESCRIZIONE
The international standard ISO/IEC 10646 defines the Universal Character Set (UCS). UCS contains all characters of all other character set standards. It also guarantees "round-trip compatibility"; in other words, conversion tables can be built such that no information is lost when a string is converted from any other encoding to UCS and back.

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 è ancora in corso e prima o poi verranno aggiunti. Ciò 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.

The UCS standard (ISO/IEC 10646) describes a 31-bit character set architecture consisting of 128 24-bit groups, each divided into 256 16-bit planes made up of 256 8-bit rows with 256 column positions, one for each character. Part 1 of the standard (ISO/IEC 10646-1) defines the first 65534 code positions (0x0000 to 0xfffd), which form the Basic Multilingual Plane (BMP), that is plane 0 in group 0. Part 2 of the standard (ISO/IEC 10646-2) adds characters to group 0 outside the BMP in several supplementary planes in the range 0x10000 to 0x10ffff. There are no plans to add characters beyond 0x10ffff to the standard, therefore of the entire code space, only a small fraction of group 0 will ever be actually used in the foreseeable future. The BMP contains all characters found in the commonly used other character sets. The supplemental planes added by ISO/IEC 10646-2 cover only more exotic characters for special scientific, dictionary printing, publishing industry, higher-level protocol and enthusiast needs.

La rappresentazione di ciascun carattere UCS come parola di 2 byte è chiamato forma UCS-2 (solo per i caratteri BMP), mentre UCS-4 è la rappresentazione di ciascun carattere in una parola a 4 byte. In aggiunta esistono due forme di codifica UTF-8 per retrocompatibilità col software di elaborazione ASCII e UTF-16 per la gestione della retrocompatibilità 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 8859-1 Latin-1.

  Caratteri combinanti
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 codice 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.

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
As not all systems are expected to support advanced mechanisms like combining characters, ISO/IEC 10646-1 specifies the following three implementation levels of 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.

The Unicode 3.0 Standard published by the Unicode Consortium contains exactly the UCS Basic Multilingual Plane at implementation level 3, as described in ISO/IEC 10646-1:2000. Unicode 3.1 added the supplemental planes of ISO/IEC 10646-2. The Unicode standard and technical reports published by the Unicode Consortium provide much additional information on the semantics and recommended usages of various characters. They provide guidelines and algorithms for editing, sorting, comparing, normalizing, converting, and displaying Unicode strings.

  Unicode sotto Linux
Sotto GNU/Linux, il tipo C wchar_t è 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 è segnalata alle applicazioni dalla libreria C di GNU definendo la costante __STDC_ISO_10646__ come specificato nello standard ISO C99.

UCS/Unicode può 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").

The nl_langinfo(CODESET) function returns the name of the selected encoding. Library functions such as wctomb(3) and mbsrtowcs(3) can be used to transform the internal wchar_t characters and strings into the system character encoding and back and wcwidth(3) tells how many positions (0–2) the cursor is advanced by the output of a character.

  Aree di uso privato (PUA)
L'intervallo da 0xe000 a 0xf8ff nel Piano multi-linguistico di base, non verrà mai assegnato dallo standard a nessun carattere ed è riservato per uso privato. Per la comunità Linux questo intervallo è stato ulteriormente suddiviso nell'intervallo da 0xe000 a 0xefff, che può 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 è al momento mantenuto da LANANA e il registro stesso è 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

•   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 è la specifica ufficiale di UCS. Disponibile su http://www.iso.ch/.

•   The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.

•   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.

•   Unicode Technical Reports.
    http://www.unicode.org/reports/

•   Markus Kuhn: UTF-8 and Unicode FAQ for UNIX/Linux.
    http://www.cl.cam.ac.uk/~mgk25/unicode.html

•   Bruno Haible: Unicode HOWTO.
    http://www.tldp.org/HOWTO/Unicode-HOWTO.html

VEDERE ANCHE
locale(1), setlocale(3), charsets(7), utf-8(7)

TRADUZIONE
La traduzione italiana di questa pagina di manuale è stata creata da Ottavio G. Rizzo <rizzo@pluto.linux.it>, Giulio Daprelà <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it> e Marco Curreli <marcocurreli@tiscali.it>

Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 (https://www.gnu.org/licenses/gpl-3.0.html) o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.