Чтение символов из неизвестной кодировки - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть строка из старой базы данных с неизвестной кодировкой символов. У меня проблемы с кодированием / фильтрацией строки для отображения правильного текста.

Как выглядят данные в базе данных: Marronnière à quatre pans
Что нам нужно, чтобы строка отображалась как: Marronnière à quatre pans

В частности, у меня проблемы с анализом строки, поэтому я могу отобразить символ à (à)

Это сайт asp.Net 2.0, написанный на VB с использованием базы данных Sql Server 2005. Не уверен, что это важно, но данные поступают из столбца с таким сопоставлением: SQL_Latin1_General_CP1_CI_AS

Я пытался кодировать строку в различные кодировки в коде, но безрезультатно. Я также передал строку (закодированную различными способами) в байтовый массив, чтобы найти уникальный шаблон байта для плохих символов без успеха.

Любые идеи или предложения будут с благодарностью, спасибо.

1 Ответ

1 голос
/ 18 февраля 2011

Похоже, что сортировка в базе данных SQL Server не соответствует фактически используемой кодировке символов :( Это довольно распространенная ошибка для неосторожных разработчиков.

Вот почему инструменты администрирования SQL Server показываютстранные символы, а не строки, которые вы ожидаете.

Возможно, это UTF-8? В UTF-8 à представлен байтами 0xC3 0xA8, которые будут интерпретироваться под латинской кодовой страницей Windows-1 как è. Я ничего не знаю о сопоставлениях SQL Server, но вполне вероятно, что SQL_Latin1_CP1_CI_AS похож на Windows "Latin-1".

Вам либо нужно

  • исправьте кодировку при чтении из базы данных. Ужасно и запутанно для следующей бедной жертвы, которая имеет дело с этой базой данных и кодом.
  • или, лучше, исправьте данные в базе данных так, чтобы они соответствовали сопоставлениюВозможно, вы захотите изменить параметры сортировки на UTF-8 или UTF-16: вам также потребуется изменить данные.
...