我已经用谷歌搜索了这个话题,并且已经查看了所有答案,但还是不明白。
基本上,我需要将UTF-8字符串转换为ISO-8859-1,并使用以下代码进行操作:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
我的源字符串是
Message = "ÄäÖöÕõÜü"
但是不幸的是我的结果字符串变成了
msg = "�ä�ö�õ�ü
我在这里做错了什么?
在尝试将其解码为目标编码之前,请使用Encoding.Convert调整字节数组。
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(Message);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string msg = iso.GetString(isoBytes);
一个班轮是
Encoding.GetEncoding("ISO-8859-1").GetString(Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-1"), Encoding.UTF8.GetBytes(myString)))
如果您是在C#/。Net中自己创建字符串,则此代码不是100%正确,因此您需要使用UTF-16(即变量“ Unicode”)进行编码。因为这是默认设置。因此,上面代码中的UTF8必须更改为Unicode。
我建议使用此方法:Encoding iso = Encoding.GetEncoding(“ ISO-8859-9”); 因为土耳其语编码几乎涵盖了所有拉丁文字母。