Nel mondo moderno sembra che finalmente ci stiamo adattando ad usare utf-8 come quasi-standard, sebbene questo si porti dietro un corredo di teorie basate sul sentito dire riguardo agli encoding ed ai character set, spesso con dimostrazione per giustapposizione.
Ad esempio utf-8 è compatibile con ASCII e quindi è a grandezza fissa e quindi non comprende tutti i caratteri UCS-4, piuttosto che java usa utf-16 perché è una codifica di dimensioni fisse che comprende tutti i caratteri anche gli ideogrammi.

Ora, questo post è solo per ricordare che, come al solito, abbiamo una visione terribilmente occidentale su Unicode.

Siccome il discorso su codifica/charset/collation/glifi/codepoint/caratteri è mooooolto al di là delle mie capacità di comprensione, posso provare a dare una versione elementare dei fatti per come li ho capiti:

  1. ci sono dei charset, insiemi di caratteri. Alcuni sono piccoli, come ASCII, altri hanno 4 miliardi di caratteri, come Unicode
  2. poi ci sono delle codifiche dei vari charset, utf-8/32/16BE/16LE sono tutte codifiche dello stesso charset ovviamente ottimizzate per scopi differenti
  3. Unicode è il prodotto delle Multinazionali Malvage, e quindi all’inizio faceva schifo, poi quando si sono resi conto che un giapponese/cinese/vietnamita/koreano usando Unicode non avrebbe avuto accesso ad alcune cose lo hanno cambiato
  4. come tutte le toppe messe ex post, la soluzione attuale è a dir tanto subottimale, ma funziona
  5. per essere felici in occidente basta supportare unicode, per essere felici in oriente pure, ma per essere corretti in oriente ci sono un fottio di altri charset e codifiche da supportare
  6. in giappone fanno dei port dei software per fargli supportare i loro encoding, ad esempio esistono vari emacs giapponesi. Una delle ragioni per cui esiste ruby è che perl non gestiva la codifica che serviva a matz

Ora, perché questo discorso? Beh, perché secondo me è interessante, e poi mi permette di introdurre il link ad un post su ruby-talk dove viene annunciata la disponibilità in inglese di nuovi capitoli della Ruby Hacking Guide e c’è la traduzione di una presentazione fatta da matz a YAPC::Asia.

Il collegamento è nel fatto che parrot/perl6 sarà, come python attuale, fondamentalmente basato su Unicode, mentre Rite/Ruby2.0 sarà basato su un concetto di totale indipendenza dalla codifica.
È evidente che è una soluzione per un problema al quale l’occidentale medio (ma neanche il cinese medio) neanche pensa, non per malvagità ma solo perché è fuori dal suo mondo.

Per concludere, un paio di link utili a capire il discorso su unicode:
Unicode Revisited, Han Unification, Unicode in Japan, TRON MultiLanguage Environment (sapevate che TRON è il sistema operativo più usato al mondo?)

E per concludere una citazione, sul fatto che alcune codifiche siano un po’ troppo stateful:

the Khmer area contains a pair of non-printing characters whose role was to switch between religious and non-religious mode

:)