Nozioni fondamentali su Unicode

L'archiviazione di dati in lingue diverse all'interno di un singolo database presenta difficoltà di gestione se si utilizzano solo dati di tipo carattere e tabelle codici. È difficile individuare per il database una singola tabella codici che contenga tutti i caratteri necessari specifici della lingua. È inoltre difficile garantire che i caratteri speciali letti o aggiornati da client diversi che eseguono tabelle codici diverse vengano convertiti correttamente. È consigliabile che i database che supportano client internazionali utilizzino sempre tipi di dati Unicode anziché tipi di dati non Unicode.

Ad esempio, un database di clienti residenti in Nord America gestisce tre lingue principali:

  • Nomi e indirizzi in spagnolo per il Messico.

  • Nomi e indirizzi in francese per il Quebec.

  • Nomi e indirizzi in inglese per il resto del Canada e gli Stati Uniti.

Se vengono utilizzate solo colonne di tipo carattere e tabelle codici, è necessario verificare che il database sia installato con una tabella codici in grado di gestire i caratteri delle tre lingue. È inoltre necessario garantire che i caratteri di una delle tre lingue letti dai client che eseguono una tabella codici di un'altra lingua vengano convertiti correttamente.

Con l'espansione di Internet, la possibilità di supportare molti computer client con impostazioni locali diverse assume un'importanza sempre maggiore. È difficile selezionare una tabella codici per i dati di tipo carattere in grado di supportare tutti i caratteri necessari per gli utenti di tutto il mondo.

Il modo più semplice per gestire dati di tipo carattere in database internazionali consiste nell'utilizzare sempre i tipi di dati Unicode nchar, nvarchar e nvarchar(max) anziché gli equivalenti non Unicode char, varchar e text.

Unicode è uno standard per il mapping dei punti di codice ai caratteri. È progettato per supportare tutti i caratteri di tutte le lingue del mondo, pertanto non è necessario che set di caratteri diversi vengano gestiti da tabelle codici diverse. SQL Server supporta lo standard Unicode, versione 3.2.

Se tutte le applicazioni che utilizzano database internazionali utilizzano inoltre variabili Unicode anziché variabili non Unicode, la conversione dei caratteri non sarà mai necessaria. Tutti i client visualizzeranno esattamente gli stessi caratteri.

In SQL Server tutti i dati di testo del catalogo di sistema vengono archiviati in colonne con tipi di dati Unicode. I nomi degli oggetti di database, ad esempio tabelle, viste e stored procedure, vengono archiviati in colonne Unicode. In questo modo è possibile sviluppare le applicazioni utilizzando solo Unicode ed evitando quindi tutti i problemi relativi alle conversioni delle tabelle codici.