Исправлять текст в базе данных? - PullRequest
1 голос
/ 04 марта 2011

Вопрос:

В одной из моих баз данных есть значение в поле varchar: Brokers México, Intermediario de Aseguro, S.A.

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

Теперь два вопроса:

А)
В C # / VB.NET как я могу изменить MÃ © xico обратно на правильное значение («México»), прежде чем сохранять его в поле Unicode (при условии, что я знаю правильную кодовую страницу источника)?

B)
Есть ли способ выяснить кодовую страницу, если я не хочу делать это вручную? (хорошо, спрашивать бесплатно, но я полагаю, что нет).

1 Ответ

5 голосов
/ 04 марта 2011

Возможно, вы захотите попробовать примерно так:

string broken = "Brokers México, Intermediario de Aseguro,S.A."; // Get text from database
byte[] encoded = Encoding.GetEncoding(28591).GetBytes(broken);
string corrected = Encoding.UTF8.GetString(encoded);

Это действительно зависит от того, как оно было вставлено - это предполагает, что что-то заняло байты UTF-8, интерпретируя их какстроку ISO-8859-1, а затем вставил эту строку в базу данных.По сути, код выполняет то же преобразование в обратном порядке.

Я не уверен в том, чтобы выяснить кодовую страницу - я бы угадал в ISO-8859-1 и UTF-8, чтобы начать си, если это не сработает, посмотрите на некоторые примеры неправильной и правильной версии.

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