понедельник, 15 июня 2009 г.

T-SQL. Вставка unicode-данных.

Проблема при попытке вставить unicode-данные в поле типа ntext с помощью SQL-оператора INSERT:

INSERT INTO MyTable (Field1) VALUES ('Операциялық жүйе');

Вставленные данные выглядят следующим образом: "Операциялы? ж?йе" (национальные символы заменены вопросами).

Причина в том, что вставляемый текст автоматически конвертируется в 8-ми битную кодировку (1251 в данном случае).

Решение: перед unicode-текстом делаем префикс "N":

INSERT INTO MyTable (Field1) VALUES (N'Операциялық жүйе');

Символ "N" перед вставляемым текстом указывает MS SQL Server'у на то, что данный текст следует обрабатывать в кодировке unicode.

Комментариев нет: