MSSQL и UTF

Бывает необходимо проектировать базы данных, записи которой содержат специальные символы, не входящие в какой-либо из алфавитов. Поэтому возникает надобность в использовании кодировки Юникод (UTF). О том как подружить MSSQL и UTF будет рассказано в данной статье.

Допустим требуется спроектировать базу данных (БД) для MSSQL содержащую англо-русский словарь. Соответственно поля этой таблицы будут следующими:

  • Английское слово
  • Транскрипция
  • Перевод

Международный фонетический алфавит (International Phonetic Alphabet – IPA) из которого составляется транскрипция содержит специальные символы которые не в ходят ни английский алфавит, ни в русский (само собой), ни в какой-либо другой, например: ə, ð, æ, ʃ, ʌ и так далее.

В Microsoft SQL Server (MSSQL) присутствуют только национальные кодировки, то есть таблицы символов для конкретного языка. Если выполнить запрос:

То можно увидеть список всех доступных кодировок. Список огромный (у меня 3885 строк).

Доступные collate в mssql

Все эти кодировки применимы в MSSQL к полям с однобайтовыми типами данных: char, varchar и text.

Чтобы установить нужную кодировку (например Latin1_General_CI_AI), необходимо воспользоваться оператором COLLATE:

В списке кодировок MSSQL отсутствует UTF (Юникод). Так как же настроить ее использование?

В MSSQL реализованы двухбайтовые типы данных: nchar, nvarchar и ntext. Как раз они и поддерживают использование всех символов кодировки UTF.

Использование типов данных nchar, nvarchar и ntext имеет серьезную особенность. Чтобы данные, заносимые в БД, корректно обрабатывались, нужно перед вставляемым значением дописать букву N – это сигнал для SQL сервера, что вводимые данные это Юникод.

Рассмотрим пример. Создадим таблицу, где поле transcription имеет тип nvarchar:

Добавление записи в таблицу будет происходить так:

Видим, что данные корректно отображаются:

MSSQL и UTF

Спасибо за прочтение статьи о MSSQL и UTF!

 

 

MSSQL и UTF
5 (100%) 4 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">