Usar datos Unicode

La especificación Unicode define un esquema de codificación único para la mayor parte de los caracteres usados con más frecuencia en todo el mundo. Todos los equipos traducen de forma coherente los patrones de bits de los datos Unicode a caracteres, con la especificación única de Unicode. Esto asegura que el mismo patrón de bits se convierte siempre al mismo carácter en todos los equipos. Los datos se pueden transferir libremente de unas bases de datos o unos equipos a otros, sin preocuparse de que el sistema que los reciba traduzca los patrones de bits de forma incorrecta.

Un problema con los tipos de datos que usan un byte para codificar cada carácter es que el tipo de datos sólo puede representar 256 caracteres distintos. Esto exige varias especificaciones de codificación, o páginas de códigos, para distintos alfabetos, como los europeos, que son relativamente pequeños. Tampoco se pueden administrar sistemas como el alfabeto kanji japonés o el hangul coreano, que tienen miles de caracteres.

Cada intercalación de Microsoft SQL Server dispone de una página de códigos que define los patrones de bits que representan cada carácter en los valores char, varchar y text. Es posible asignar una página de códigos diferente a constantes de caracteres y columnas individuales. Los equipos cliente usan la página de códigos asociada a la configuración regional del sistema operativo para interpretar los patrones de bits de caracteres. Existe un gran número de páginas de códigos diferentes y algunos caracteres aparecen en algunas páginas, pero no en otras. Algunos caracteres se definen con un patrón de bits en algunas páginas de códigos y con un patrón de bits distinto en otras. Cuando se crean sistemas internacionales que deben manejar distintos idiomas, resulta difícil elegir páginas de códigos para todos los equipos que cumplan los requisitos de los idiomas de varios países y regiones. Asimismo, es difícil asegurar que cada equipo realiza las traducciones correctas cuando interactúan con un sistema que utiliza una página de códigos distinta.

La especificación Unicode resuelve este problema al utilizar 2 bytes para codificar cada carácter. Hay suficientes patrones distintos (65.536) en 2 bytes para establecer una única especificación que abarque la mayor parte de los idiomas comerciales comunes. Dado que todos los sistemas Unicode usan de forma coherente los mismos patrones de bits para representar todos los caracteres, se resuelve el problema que plantea el hecho de que los caracteres se pudieran convertir de forma incorrecta al pasarlos de un sistema a otro. Puede minimizar los problemas de la conversión de caracteres si utiliza tipos de datos Unicode en su sistema.

En SQL Server, éstos son los tipos de datos que admiten datos Unicode:

  • nchar

  • nvarchar

  • ntext

    Nota

    El prefijo n de estos tipos de datos procede del estándar ISO para los tipos de datos National (Unicode).

El uso de nchar, nvarchar y ntext es el mismo que el de char, varchar y text, respectivamente, excepto en los siguientes aspectos:

  • Unicode admite una gama más amplia de caracteres.

  • Se necesita más espacio para almacenar caracteres Unicode.

  • El tamaño máximo de las columnas nchar es de 4.000 caracteres, no 8.000 como en char y varchar.

  • El tamaño máximo de las columnas nvarchar, si se utiliza el especificador max, es de 2^31-1 bytes. Para obtener más información acerca de nvarchar(max), vea Usar tipos de datos de valores grandes.

  • Las constantes Unicode se especifican con una N a la izquierda: N'Cadena Unicode'.

  • Todos los datos Unicode utilizan el juego de caracteres definido por la norma Unicode. Las intercalaciones Unicode que se utilizan en las columnas Unicode se basan en atributos como la distinción de mayúsculas y minúsculas, la distinción de acentos, la distinción de tipos de kana, la distinción de ancho y los binarios.