Umlaute неправильно закодированы! - PullRequest
3 голосов
/ 08 октября 2010

Я получаю поток. Все отлично работает, но кодировка Umlaute (ä, ö, ü, ß).

Что такое

NäüßÖ´sas so viele Umlaute

становится

N䤼Ãôsas so viele Umlaute

Я попробовал Ascii-Encoding и несколько других, как показано в следующем источнике.

ASCIIEncoding encoder = new ASCIIEncoding();
Encoding enc = Encoding.GetEncoding(28591);

string response = enc.GetString(message, 0, bytesRead);

Какой из них решит мою проблему?

Ответы [ 3 ]

7 голосов
/ 08 октября 2010

Я ничего не знаю о .NET, но я знаю, что этот шаблон mojibake :

äüÃÃÂ

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

5 голосов
/ 08 октября 2010

Ни один из следующих символов äüßÖ не является ASCII.

Вы должны использовать ту же кодировку, что и они (вероятно, UTF-8):

Encoding enc = new UTF8Encoding()
string response = enc.GetString(message, 0, bytesRead);

Кодовая страница, которую вы используетеиспользуется (28591) - это сопоставлено с iso-8859-1, которое включает эти символы, однако они, вероятно, кодируются как UTF-8 (или другой вариант Unicode), но не iso-8859-1.Вам нужно использовать правильную кодировку, чтобы получить правильные закодированные символы.

0 голосов
/ 09 октября 2010

Если вам нужно 8-битное кодирование, используйте ISO-8859-2 (или Latin 2), который поддерживает немецкие символы. Или, если можете, используйте некоторые из кодировок UNICODE, таких как UTF-8. в последнем случае лучше позволить кодировщику включить BOM (Byte Order Mark) в начало потока символов, чтобы приложения, считывающие или отображающие ваш вывод, могли правильно определить кодировку.

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