Utilizzo dei dati Unicode

Le specifiche dello standard Unicode definiscono un unico schema di codifica per la maggior parte dei caratteri utilizzati in tutto il mondo. Gli schemi di bit dei dati Unicode vengono convertiti in caratteri in qualsiasi computer in base alla stessa specifica Unicode. Ciò garantisce la conversione uniforme di uno schema di bit nello stesso carattere in qualsiasi computer. È possibile trasferire i dati da un database o da un computer all'altro senza alcun rischio che nel sistema ricevente gli schemi di bit vengano convertiti in caratteri in modo non corretto.

Un problema associato ai tipi di dati che utilizzano 1 byte per la codifica di ogni carattere è dovuto dal fatto che il tipo di dati consente di rappresentare solo 256 caratteri diversi. È pertanto necessario utilizzare più specifiche di codifica, o tabelle codici, per alfabeti diversi, ad esempio quelli europei, che sono composti da un numero relativamente ridotto di caratteri. Inoltre non è possibile gestire sistemi quali l'alfabeto giapponese Kanji o coreano Hangul che includono migliaia di caratteri.

Ogni regola di confronto di MicrosoftSQL Server include una tabella codici che definisce lo schema di bit che rappresenta ogni carattere nei valori di tipo char, varchar e text. Alle singole costanti di colonna e valori di carattere è possibile assegnare una tabella codici diversa. Per interpretare gli schemi di bit, nei computer client viene utilizzata la tabella codici corrispondente al sistema operativo in uso. Le tabelle codici sono molte e alcuni caratteri sono disponibili in alcune e non in altre oppure vengono definiti con uno schema di bit in alcune tabelle codici e con uno schema diverso in altre. Per lo sviluppo di sistemi internazionali che devono gestire lingue diverse, risulta difficile recuperare le tabelle codici per tutti i computer che soddisfano i requisiti linguistici di più paesi. È inoltre difficile fare in modo che in ogni computer venga eseguita la conversione corretta quando si interfaccia con un sistema che utilizza una tabella codici diversa.

La specifica Unicode risolve questo problema utilizzando 2 byte per la codifica di ogni carattere. In 2 byte è possibile archiviare schemi diversi (65.536) sufficienti per la gestione della maggior parte delle lingue comunemente utilizzate a livello aziendale. Poiché tutti i sistemi Unicode utilizzano in modo uniforme gli stessi schemi di bit per rappresentare tutti i caratteri, quando si passa da un sistema a un altro non si verifica alcun problema per quanto riguarda la corretta conversione dei caratteri. Per ridurre al minimo i problemi di conversione, è possibile utilizzare i tipi di dati Unicode nell'intero sistema.

In SQL Server i tipi di dati seguenti supportano i dati Unicode:

  • nchar

  • nvarchar

  • ntext

    [!NOTA]

    Il prefisso n di questo tipo di dati deriva dallo standard ISO per i tipi di dati nazionali (Unicode).

Utilizzare nchar, nvarchar e ntext equivale a utilizzare rispettivamente char, varchar e text, con alcune eccezioni:

  • Lo standard Unicode supporta una gamma di caratteri più ampia.

  • Per l'archiviazione dei caratteri Unicode è necessaria una quantità di spazio maggiore.

  • Le dimensioni massime delle colonne nchar sono 4.000 caratteri e non 8.000 caratteri come per char e varchar.

  • Le dimensioni massime per le colonne nvarchar, utilizzando l'identificatore max, sono di 2^31-1 byte. Per ulteriori informazioni su nvarchar(max), vedere Utilizzo di tipi di dati per valori di grandi dimensioni.

  • Le costanti Unicode vengono specificate con una N iniziale: N'Stringa Unicode'.

  • Tutti i dati Unicode utilizzano il set di caratteri definito dallo standard Unicode. Le regole di confronto Unicode utilizzate per le colonne Unicode sono basate su attributi quali la distinzione tra caratteri maiuscoli e minuscoli, la distinzione tra caratteri accentati e non accentati, la distinzione Kana, la distinzione larghezza e l'attributo binario.