Проблема кодировки SQL Server и ASP .NET - PullRequest
0 голосов
/ 15 сентября 2010

На мою страницу добавлен метаэлемент utf-8 + Серверная кодировка sql также utf.Однако, когда я создаю запись и пытаюсь выполнить инструкцию SELECT с условием, которое содержит символы POLISH, такие как 'ñ', я не вижу результатов.Есть идеи, что мне не хватает?

ТАКЖЕ студия управления Sql показывает результат с польскими символами, но я не верю этому .... Я думаю, что-то не так с записью в базу данных ...

Или как я могуустранить проблему?

Спасибо, Павел

Ответы [ 3 ]

3 голосов
/ 16 апреля 2011

У меня была такая же проблема, и я решил ее, добавив к тексту в предложении WHERE "N".

Например, у меня есть таблица «Персона», содержащая чуть более 21 000 имен людей. Человек с фамилией «Krzemiński» был недавно добавлен в базу данных, и имя отображается как нормальное, когда отображается строка (то есть символ «ñ» отображается правильно). Однако ни одно из следующих утверждений не вернуло никаких записей:

SELECT * FROM Person WHERE FamilyName='Krzemiński
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemiń%'

... но оба эти утверждения вернули правильную запись:

SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%'<br>
SELECT * FROM Person WHERE FamilyName LIKE 'Krzemi%ski'

Когда я выполнил следующее утверждение:

SELECT * FROM Person WHERE FamilyName LIKE '%ń%'

Я получаю все 8900 записей, которые содержат букву "n" (без диакритического знака), но я не получаю запись, которая содержит символ "ń". Я пробовал этот последний запрос со всеми польскими символами (ąćęłńóśźż), и все они, кроме "ó", демонстрируют одинаковое поведение (то есть возвращают все записи с символом, эквивалентным нижнему ASCII). Как ни странно, «-» работает должным образом, возвращая только те записи с «-» в поле FamilyName.

В любом случае, решение состояло в том, чтобы поставить перед критерием поиска «N», чтобы явно объявить его как Unicode.

Таким образом, следующие утверждения:

SELECT * FROM Person WHERE FamilyName LIKE N'%ń%'
SELECT * FROM Person WHERE FamilyName=N'Krzemiński'

... оба возвращают правильный набор записей.

Причина, по которой я был сбит с толку, заключается в том, что у меня МНОГИЕ записи со странными диакритическими знаками, и все они возвращают правильные записи даже без префикса "N". На данный момент единственными символами, которые я обнаружил, требующими явного префикса «N», являются польские символы.

1 голос
/ 16 апреля 2011
0 голосов
/ 17 ноября 2010

просто используйте nvarchar вместо varchar в качестве типа данных столбца, сохраняющего запись.

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