Поле базы данных SQL Server для обработки корейских и китайских символов - PullRequest
15 голосов
/ 19 января 2011

Возможно ли иметь в SQLServer поле, в котором можно хранить китайские, корейские и европейские символы? Мои китайские иероглифы просто становятся ?????

Тип данных также является NVARCHAR.

1 Ответ

34 голосов
/ 19 января 2011

NVARCHAR является подходящим типом для этого - он хранит все в 2-байтовом Unicode.

На что нужно обратить внимание, при работе с полями NVARCHAR в SQL Server Management Studio -в этом случае вы абсолютно должны использовать префикс N'....'!

Если вы используете это:

INSERT INTO dbo.YourTable(NVarcharColumn)
    VALUES('Some Chinese text here')

, тогда SSMS временно преобразует строковый литерал, который вы указываете в VARCHAR (не в Юникоде!), и поэтому вы потеряете все символы в кодировке Юникод.

Однако, если вы используете:

INSERT INTO dbo.YourTable(NVarcharColumn)
    VALUES(N'Some Chinese text here')

(примечаниепрефикс N перед строковым литералом!) тогда SSMS будет обрабатывать все как Unicode все время, и ваши специальные китайские или корейские (или другие) специальные символы должны быть сохранены.

...