MS SQL вставляет вопросительные знаки вместо нелатинских символов - PullRequest
0 голосов
/ 31 октября 2018

Я использую Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2012 R2 Standard Evaluation 6.3 <X64> (Build 9600: ) (Hypervisor)

Когда я делаю: INSERT INTO MYTABLE(COLNAME) VALUES ('Қазақстан') он вставляет вопросительные знаки ????????? вместо фактической строки. Мой тип столбца NVARCHAR(255). Если я вставлю символ N перед своим значением, как это: ...(N'Қазақстан'), оно будет сохранено правильно. Это единственный способ вставить не-ASCII символы или я должен изменить что-то еще?

Спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

Ответ на ваш вопрос: да, вы должны использовать N

С Документы

При добавлении к строковой константе буквы N неявное преобразование приведет к строке UCS-2 или UTF-16, если константа для преобразования не превышает максимальную длину для строкового типа данных nvarchar (4000). В противном случае неявное преобразование приведет к большому значению nvarchar (max).

Так что, если вы не используете N, SQL Server будет рассматривать его как VARCHAR (не в Юникоде). Использование N преобразует строку в строку Unicode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...