SQL Server 2005 - проблема кодировки символов - PullRequest
2 голосов
/ 22 января 2011

Я пытаюсь сохранить это значение: .îăâ ./, șllkoăîâ = в столбце в SQL Server.

Это столбец nvarchar (1000), а оператор вставки выглядит как

N'țșșțșțșțșîăâ./,șllkoăîâ=' 

Но данные внутри все еще отображаются как: ????????? îaâ ./,? Llkoaîâ =

Есть идеи, что я могу попробовать?

EDIT

Я только что понял, что изменил тип данных в базе данных, но отображение linq2sql осталось с varchar вместо nvarchar.

Вот что стало причиной проблемы - я увидел это только после попытки вставки вручную.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 22 января 2011
CREATE TABLE Test (test nvarchar(1000))
INSERT Test (test) VALUES (N'țșșțșțșțșîăâ./,șllkoăîâ=')

-- SSMS query pane = correct results
SELECT * FROM Test

Теперь, если щелкнуть правой кнопкой мыши таблицу в обозревателе объектов, «Изменить первые 200 строк» ​​или «ВЫБРАТЬ ТОП 1000 строк» ​​даст мне правильные результаты в SSMS 2008

Далее, без префикса N.Данные разбиты согласно вашему вопросу

INSERT Test (test) VALUES ('țșșțșțșțșîăâ./,șllkoăîâ=')
SELECT * FROM Test
--gives ?????????îaâ./,?llkoaîâ=

Итак, это показывает, что SSMS и SQL ведут себя точно так, как объявлено: пожалуйста, покажите нам точный код (или метод), который вы используете для вставки данных

0 голосов
/ 22 января 2011

Как вы добавляете это в свою таблицу? В Mgmt Studio ??? Какое утверждение вы используете ??

Если у вас есть NVARCHAR столбцы, вы должны использовать синтаксис N'...' с ведущим префиксом N, чтобы это работало:

INSERT INTO dbo.YourTable(someColumn)
 VALUES(N'țșșțșțșțșîăâ')

Если вы пропустите префикс N, Mgmt Studio временно преобразует его в не-Unicode VARCHAR ....

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