UCS contiene i caratteri necessari alla rappresentazione di praticamente tutte le lingue conosciute. Esso comprende non solo i caratteri romano, 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 coperti 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 copre 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, oltra a molti sistemi di elaborazione testi e di pubblicazione, e altri ne sono stati aggiunti.
Lo standard UCS (ISO 10646) descrive una architettura di caratteri a 31 bit consistente di 128 grupi a 24 bit, ciascuno diviso in 256 piani a 16 bit, composti da 256 linee a 8 bit, con 256 colonne , una per ciascun carattere. La parte 1 dello standard (ISO 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 due dello standard (ISO 10646-2) aggiunge caratteri al gruppo 0 al di fuori del BMP in numerosi piani supplementari nel range 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 verrà 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 10646-2 coprono solo caratteri esotici per speciali bisogni scientifici, stampa dizionario, industria editoriale, protocolli di livello più elevato, e entusiasti.
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à con software di processamento 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.
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.
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 10646-1:2000. Unicode 3.1 ha aggiunto i piani supplementari dell'ISO 10646-2. Lo standard Unicode e i raporti 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.
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 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.
In Linux in generale al momento bisognerebbe usare il BMP solo al livello 1 di implementazione. Alcuni emulatori di terminale UTF-8 e font ISO 10646 (livello 2) supportano anche fino a due caratteri combinanti per base caratteri per certi alfabeti (in particolare thai), ma, in generale, i caratteri precomposti devono essere preferiti ove disponibili (Unicode la chiama Normalization Form C).
Questa è la specifica ufficiale di UCS. Disponibile come file PDF su CD-ROM da http://www.iso.ch/.
A good reference book about the C programming language. The fourth edition covers the 1994 Amendment 1 to the ISO C 90 standard, which adds a large number of new C library functions for handling wide and multi-byte character encodings, but it does not yet cover ISO C 99, which improved wide and multi-byte character support even further.
Fornisce informazioni sulla sottoscrizione alla mailing list linux-utf8 che è il miglior posto in cui guardare per consigli sull'uso di Unicode sotto Linux.