Database  »  Articoli  »  MySQL 

MySQL e supporto dei set di caratteri

di: Claudio Garau     31 Marzo 2009

I set di caratteri (charset o character set), detti anche gruppi codificati di caratteri, sono dei sistemi attraverso i quali i numeri, le lettere di un alfabeto (grafemi), i segni di interpunzione, i simboli e i caratteri speciali riproducibili digitalmente vengono archiviati in un formato binario. Nel corso di questa breve trattazione verrà affrontato il tema relativo alla gestione dei set di caratteri tramite il DBMS MySQL.

Gestione del set di caratteri predefinito e delle collations

Il set di caratteri predefinito per il Database server MySQL è il latin1, ad esso è associata e la collation latin1_swedish_ci che permette di lavorare anche con le regole dei caratteri utilizzati nei paesi scandinavi; infatti, ad ogni set di caratteri vengono associate una o più collations (termine traducibile come raccolta o anche collazione che introduce il significato di confronto), esse rappresentano le modalità disponibili per confrontare le stringhe di caratteri appartenenti ad un determinato set. L'utilizzo di latin1 e di latin1_swedish_ci mette a disposizione gli strumenti necessari per soddisfare le esigenze di compatibilità con i caratteri più utilizzati negli Stati Uniti e nei paesi dell'Europa Occidentale.

Uno specifico set definisce l'insieme dei caratteri accettabili e identificabili durante le operazioni di estrazione e manipolazione dei dati, le collations indicano invece come le stringhe dovranno essere estratte all'interno di comandi SELECT lanciati da istruzioni contenenti le clausole ORDER BY e GROUP BY.

Naturalmente, MySQL consente di modificare il set di caratteri predefinito e le relative collations con due apposite opzioni che sono --character-set-server e --collation-server da utilizzare all'avvio dell'applicazione; l'unico vincolo è quello di indicare una collation compatibile con il set di caratteri che si intende utilizzare, per questo scopo, sarà possibile lanciare il comando SHOW COLLATION che permetterà di reperire le informazioni necessarie al fine di stabilire quali collations sono disponibili per un determinato charset.

Per quanto riguarda i set di caratteri disponibili, questi dipendono dalle direttive configurabili attraverso le opzioni --with-charset=nome_charset e --with-extra-charsets, mentre i file per la configurazione dei charset sono presenti sul percorso SHAREDIR/charsets/Index.

Nel momento in cui un client stabilisce una connessione con il database server, quest'ultimo specificherà al richiedente il tipo di set di caratteri predefinito corrente, quindi il client utilizzerà quel charset come set di caratteri di riferimento per l'intera durata della connessione.

Può verificarsi il caso in cui un client sia stato compilato definendo percorsi diversi da quelli utilizzati dal server e che i set di caratteri non siano stati tutti inclusi tra i binari di MySQL; in presenza di una situazione come quella descritta, se per il server è stato predefinito un set di caratteri diverso da quello del client, sarà necessario che l'utilizzatore indichi il percorso in cui sono presenti i charset richiesti per poter interrogare il server.

Questo sarà possibile utilizzando l'opzione --character-sets-dir a cui dovrà essere passato quale argomento il percorso al charset, come nell'esempio seguente:

character-sets-dir=/usr/local/mysql/share/mysql/charsets

Se non si dispone dell'informazione necessaria per valorizzare il parametro richiesto dall'opzione, è comunque possibile obbligare il client ad utilizzare un determinato set di caratteri grazie all'opzione default-character-set a cui va passato come argomento il nome del charset da utilizzare.

Per l'escaping delle stringhe all'interno della interrogazioni in linguaggio SQL, cioè per effettuare il quoting (delimitazione) dei caratteri, è possibile utilizzare mysql_escape_string(), inoltre, è disponibile la più recente funzione mysql_real_escape_string() che vincola l'account al set di caratteri utilizzato per una specifica connessione.

Guide Database

Guida Access

Iniziare a sviluppare database grazie alla potenza visuale offerta...

Guida SQL Server 2005

L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito...

Guida Oracle

Scoprire ed approfondire un dei più importanti RDBMS sulla scena...

Altre guide

Newsletter

Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto