Расшифровать строку UTF8 на латиницу - PullRequest
1 голос
/ 27 февраля 2011

Я пытаюсь преобразовать строку UTF8 в латинские символы.

Вот пример того, как я пытаюсь достичь этого:

string sUnicode ="Peneda-Gerês";
string result = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, Encoding.UTF8.GetBytes(sUnicode)));

MessageBox.Show(result);

Строка возврата такая же? Без изменений?

Чего мне не хватает?

Если я зайду на этот сайт

http://software.hixie.ch/utilities/cgi/unicode-decoder/utf8-decoder

и поставить тот же текст, он будет правильно декодирован в "Peneda-Gerês";

Ответы [ 2 ]

3 голосов
/ 27 февраля 2011

Исходная строка соответствует ISO-8859-1

Запустите это и выберите правильный кодировщик:

 string sUnicode = "Peneda-Gerês";
 foreach (var enc in Encoding.GetEncodings())
 {
    Console.WriteLine("{0} {1}"
        , Encoding.UTF8.GetString(enc.GetEncoding().GetBytes(sUnicode))
        , enc.Name);
 }

Или быть на:

string result = Encoding.UTF8.GetString(
     Encoding.GetEncoding("ISO-8859-1").GetBytes(sUnicode));
1 голос
/ 27 февраля 2011

Вы конвертируете из юникода в utf8 в юникод. Таким образом, результат совпадает с исходным.

       byte[] byteAr = {
                            (byte) 'P', (byte) 'e', (byte) 'n', (byte) 'e', (byte) 'd', (byte) 'a', (byte) '-',
                            (byte) 'G', (byte) 'e', (byte) 'r', (byte) 'Ã', (byte) 'ª', (byte) 's'
                        };

       var result = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, byteAr));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...