Dan*_*rik 97 .net c# encoding utf-8 iso-8859-1
我已经搜索了这个主题,我看了每个答案,但我仍然没有得到它.
基本上我需要将UTF-8字符串转换为ISO-8859-1,我使用以下代码:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Run Code Online (Sandbox Code Playgroud)
我的源字符串是
Message = "ÄäÖöÕõÜü"
Run Code Online (Sandbox Code Playgroud)
但不幸的是我的结果字符串变成了
msg = "�ä�ö�õ�ü
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
Nat*_*lch 164
在尝试将字节数组解码为目标编码之前,请使用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);
Run Code Online (Sandbox Code Playgroud)
Man*_*anu 14
试试这个:
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);
Run Code Online (Sandbox Code Playgroud)
您需要首先修复字符串的来源.
.NET中的字符串实际上只是一个16位unicode代码点,字符的数组,因此字符串不是任何特定的编码.
当你接受该字符串并将其转换为一组字节时,编码就会发挥作用.
在任何情况下,你所做的方式,将字符串编码为具有一个字符集的字节数组,然后用另一个字符集解码,将无法正常工作,如您所见.
你能告诉我们更多关于原始字符串来自哪里,以及为什么你认为它编码错误的原因?
小智 6
似乎有点奇怪的代码.要从Utf8字节流中获取字符串,您只需要:
string str = Encoding.UTF8.GetString(utf8ByteArray);
Run Code Online (Sandbox Code Playgroud)
如果你需要将iso-8859-1字节流保存到某处,那么只需使用:前面的附加代码行:
byte[] iso88591data = Encoding.GetEncoding("ISO-8859-1").GetBytes(str);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
248412 次 |
最近记录: |