I database MySQL e PostgreSQL nei nuovi account Unbit utilizzano come codifica di default per il testo [http://it.wikipedia.org/wiki/UTF-8 utf-8,] che rappresenta la codifica unicode più diffusa e retrocompatibilie, in quanto è un superset del codice ASCII (cioè ogni carattere ASCII è identico in utf-8). Questo significa che tutti i dati in entrata ed in uscita dal database saranno in questo formato, ed è necessario porvi un po' di attenzione.
Non tutti i linguaggi hanno un supporto nativo per l'intero mondo unicode, che prevede numerose codifiche e varianti, ma nella maggior parte dei casi essi offrono supporto per utf-8, il che permette di realizzare siti multilingua senza incorrere in grossi problemi.
Esempi di problemi che possono nascere se non si fa attenzione a lavorare con unicode:
una funzione upcase("perché") potrebbe avere problemi nel trovare la versione maiuscola della "e" accentata, e quindi vi trovereste con "PERCHé"
un'espressione regolare /\w+/ matcha caratteri alfabetici. Se l'espressione non sa che lavora con unicode la stringa "è" non causerebbe un match
in unicode esistono 4 miliardi di caratteri, quindi in utf-8 esistono caratteri lunghi 1, 2, 3 o 4 byte. Funzionalità come length("stringa") devono sapere che lavorano su stringhe UTF-8 altrimenti la lunghezza di "perciò" sarebbe 7 (5+2 per la "ò"), causando problemi nella validazione dell'input.
Non necessariamente queste problematiche saranno rilevanti per la vostra applicazione. Ad esempio un software per blog prenderà il testo di un articolo e lo salverà nel database per mostrarlo di nuovo agli utenti, senza preoccuparsi se ci sono dei caratteri che non hanno senso. In alcuni casi però potrebbero nascere problemi, ad esempio se si cercasse di validare un nome come "juan mirò" o la lunghezza di un campo testuale in una form.
Si consiglia dunque di fare un pensierino fin dall'inizio su queste possibili problematiche, per evitare (o essere coscienti) di possibili bug subdoli, e perché correggere un'applicazione complessa in modo che diventi unicode-aware potrebbe essere molto difficile (esempio: PHP gestisce utf-8, ma ancora non si sa se la prossima versione, PHP6 riuscirà a supportare unicode allo stesso livello che ha python oggi)
Gli accorgimenti da utilizzare per non avere guai sono diversi a seconda del linguaggio che utilizzate per le vostre applicazioni web, ma si risolvono generalmente avendo cura di:
set fileencoding=utf-8
usare funzionalità unicode-aware (il modificatore "u" nelle regexp, ad esempio)
impostare correttamente la codifica delle pagine. Di default Unbit invierà i vostri dati con l'header Content-Type: tipo/mime; charset=utf-8, quindi dovrete preoccuparvene solo se andate a modificare esplicitamente questo campo.
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
</head>Per maggiori informazioni fate riferimento alle informazioni specifiche per la vostra piattaforma, tra cui:
HowtoUnicode (l'ultima modifica è del 2007-05-21 17:34:00, fatta da GabrieleRenzi)