C# 将特殊德语字符(UMLAUT)转换为常规UTF-8字符

C# 将特殊德语字符(UMLAUT)转换为常规UTF-8字符,c#,asp.net,asp.net-mvc,string,utf-8,C#,Asp.net,Asp.net Mvc,String,Utf 8,我有一个字符串,当我通过API响应返回时,它基本上是这样的: Ardap Fogger � Zuverl�ssiger Vernebler Zur Ungeziefer- Und Flohbek�mpfung F 一旦我在C#中转换字符串,它的最终版本应该是这样的: 我尝试过以下几种转换方法: public string ConvertStringToUTF8(string title) { byte[] data = Encoding.Default.GetBytes(title);

我有一个字符串,当我通过API响应返回时,它基本上是这样的:

Ardap Fogger � Zuverl�ssiger Vernebler Zur Ungeziefer- Und Flohbek�mpfung F
一旦我在C#中转换字符串,它的最终版本应该是这样的:

我尝试过以下几种转换方法:

public string ConvertStringToUTF8(string title)
{
    byte[] data = Encoding.Default.GetBytes(title);
    return Encoding.UTF8.GetString(data);
}
这不管用。我也尝试过以下方法:

var title = System.Uri.UnescapeDataString(" Ardap Fogger � Zuverl�ssiger Vernebler Zur Ungeziefer- Und Flohbek�mpfung F");
这两种方法产生的字符串与输入的字符串相同

如何将此字符串转换为此版本:

Ardap Fogger – Zuverlässiger Vernebler Zur Ungeziefer- Und Flohbekämpfung F

有人能帮我吗?

首先,你应该知道你的源代码是用什么编码的。很可能是德国的MS-DOS。 尝试编码第850页:encoding.GetEncoding(850)。另外,您的c#代码已经有了编码,可能是UTF。所以您尝试将UTF转换为UTF。尝试从文件中读取

public string ConvertStringToUTF8(string title)
{
    byte[] data = Encoding.Default.GetBytes(title);
    return Encoding.GetEncoding(850).GetString(data);
}

有人吗您需要在源代码处更改编码。您的API服务器正在以错误的编码写入它,或者您以错误的编码读取它。如果编码错误,以后就无法更正。另外,不要使用
编码。默认值为
,因为这只会因为不同机器上的编码不同而导致问题。您的内容是如何从浏览器发送到服务器的?是否在标题中指定内容编码?服务器以字节数组的形式接收请求,并尝试使用错误的编码将它们转换为字符串。编码必须匹配。您无法“重新转换”字符串,因为原始信息已丢失。对于所有特殊字符,即使是非德语字符、瑞典语字符、法语字符等,也无法执行此操作?@User987可能不会,您需要知道每个文件的编码,并确保为每个文件指定正确的编码。该代码页是为带有变音符号的西欧语言创建的。应该对他们中的大多数人有用
public string ConvertStringToUTF8(string title)
{
    byte[] data = Encoding.Default.GetBytes(title);
    return Encoding.GetEncoding(850).GetString(data);
}