Umlaute编码错误!

时间:2010-10-08 19:54:25

标签: c# .net encoding

我检索一个流。 一切都很好但是Umlaute(ä,ö,ü,ß)的编码。

什么是

  

NäüßÖ'sasviele Umlaute

成为

  

NäüÃÃÂ'sas所以viele Umlaute

我尝试了Ascii-Encoding和其他一些,如下面的来源所示。

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

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

哪一个会解决我的问题?

3 个答案:

答案 0 :(得分:7)

我对.NET一无所知,但我确实知道mojibake的这种模式:

äüÃÃÂ

是UTF-8被误解为ISO-8859-1的特征。因此,请尝试将输入处理为UTF-8。

答案 1 :(得分:5)

以下字符äüßÖ均不是ASCII。

您应该使用与它们相同的编码(可能是UTF-8):

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

您正在使用的代码页(28591)是mapped到iso-8859-1,其中包含这些字符,但它们可能编码为UTF-8(或其他unicode变体)但不是iso-8859- 1。您需要使用正确的编码才能获得正确的编码字符。

答案 2 :(得分:0)

如果您需要8位编码,请使用支持德语字符的ISO-8859-2(或Latin 2)。或者,如果可以的话,使用一些像UTF-8这样的UNICODE编码。在后一种情况下,让编码器在字符流的开头包含BOM(字节顺序标记),以便读取或显示输出的应用程序可以正确推断编码。