Использование данных в Юникоде

Спецификация Юникода определяет одну схему кодирования для большинства символов, используемых во всем мире. Все компьютеры согласованно переводят битовые шаблоны данных в формате Юникода в символы при помощи единой спецификации Юникода. Это гарантирует, что один и тот же битовый шаблон всегда будет преобразован в один и тот же символ на всех компьютерах. Данные могут свободно передаваться из одной базы данных или компьютера в другую без беспокойства о том, что получающая система неверно переведет эти битовые шаблоны в символы.

Проблемой типов данных, использующих 1 бит для кодирования каждого символа, является то, что тип данных может представлять только 256 различных символов. Это обуславливает наличие нескольких спецификаций кодировки, или кодовых страниц, для различных сравнительно небольших алфавитов, например европейский. Также невозможно обрабатывать такие системы, как японский (кана) или корейский (хангыль) алфавит, так как они состоят из тысяч символов.

Параметры сортировки Microsoft SQL Server имеет кодовую страницу, которая определяет, какие шаблоны битов представляют каждый символ в значениях типов данных char, varchar и text. Отдельным столбцам и символьным константам могут быть присвоены различные кодовые страницы. Клиентские компьютеры для интерпретации битовых шаблонов символов используют кодовую страницу, связанную с языком операционной системы. Существует множество различных кодовых страниц, и некоторые символы на одних кодовых страницах присутствуют, а на других нет. Некоторые символы определяются одним битовым шаблоном на одних кодовых страницах, и другим битовым шаблоном на других кодовых страницах. При создании интернациональных систем, управляющих несколькими языками, осложняется выбор кодовых страниц для всех компьютеров, соответствующих языковым требованиям нескольких стран и регионов. Также сложно гарантировать, что каждый компьютер осуществляет правильный перевод при взаимодействии с компьютером, использующим другую кодовую страницу.

Спецификация Юникода справляется с этой проблемой при помощи 2 байт для кодирования каждого символа. Объема 2 байт достаточно для представления достаточного количества различных шаблонов (65 536) для одной спецификации, охватывающей наиболее распространенные бизнес-языки. Ввиду того, что все системы в Юникоде согласованно используют одни битовые шаблоны для представления всех символов, не возникает проблемы неверного преобразования символов при переходе из одной системы в другую. Проблемы преобразования символов можно свести к минимуму с помощью использования в системе типов данных в Юникоде.

В SQL Server данные в Юникоде поддерживаются следующими типами данных:

  • nchar

  • nvarchar

  • ntext

    ПримечаниеПримечание

    Префикс n для этих типов данных обусловлен стандартом ISO для национальных типов данных в Юникоде.

Используются типы данных nchar, nvarchar и ntext так же, как и типы данных char, varchar и text соответственно, за исключением того, что:

  • Юникод поддерживает более широкий набор символов;

  • для хранения символов в Юникоде нужно больше места;

  • максимальный размер столбцов типа данных nchar составляет 4 000, а не 8 000 символов, как для типов данных char и varchar;

  • максимальный размер для столбцов типа данных nvarchar с использованием указателя максимума составляет 2^31-1 байт. Дополнительные сведения о типе данных nvarchar(max) см. в разделе Использование типов данных больших значений;

  • константы Юникода указываются c первой буквой N: N'Строка в Юникоде';

  • все данные в Юникоде используют кодировку, определенную стандартом Юникода. Параметры сортировки в Юникоде, используемые для столбцов в Юникоде, основаны на таких атрибутах, как учет регистра, диакритические знаки, тип японской азбуки, ширина символов и двоичный режим.