ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


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!

 

 

5/5 - (6 голосов)



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

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

Ваш адрес email не будет опубликован.