Исправить плохой символ из-за проблемы с кодировкой - PullRequest
0 голосов
/ 27 мая 2010

Недавно у нас возникла проблема с кодировкой в ​​нашей системе:

Если в нашей базе данных была строка «æ», то на наших веб-страницах она становилась «¦».

Теперь эта проблема решена, но проблема в том, что теперь у нас много «Ã» в нашей базе данных: пользователи не видели и не проверяли предварительно заполненную форму с этими символами.

Я обнаружил, что если вы прочитаете в utf 8 C3A6, вы получите «æ», если вы прочитаете его в ascii, вы получите «¦¦».

Это странно, потому что, если я выполню

"select convert(varbinary(40),N'æ'),convert(varbinary(40),'æ')"

У меня нет такого же результата ...

Есть ли у вас какие-либо идеи о том, как я могу исправить свою базу данных (т.е. изменить все "æ" на "æ")?

ТНХ

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Насколько я знаю, единственный способ исправить это использовать Заменить:

Update Table
Set Column = Replace(Column, N'æ', N'æ')

В этом случае я предполагаю, что столбец теперь является Unicode (т.е. nvarchar или nchar).

0 голосов
/ 29 мая 2010

если вы прочитаете это в ascii, вы получите "¦¦".

ASCII только назначает символы в байты 00-7F. Однако существует несколько «расширенных ASCII» кодировок, в которых C3 A6 представляет «¦», включая популярные западноевропейские кодировки ISO-8859-1 и windows-1252, а также турецкий ISO-8859-9 и windows-1254.

Чтобы исправить проблему с кодировкой, просто:

  1. Кодировать строку в байтовый массив, используя кодовую страницу 1252 (или 1254 для турецкого языка). Это должно произвести UTF-8 байтов.
  2. Декодировать массив байтов в строку, используя UTF-8.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...