我已经使用了这个主题,我已经看过每个答案,但我仍然不明白。C#将字符串从UTF-8转换为ISO-8859-1(Latin1)H
基本上我需要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 = "�ä�ö�õ�ü
我在做什么错在这里?
.NET中的所有字符串都使用unicode字符在内部存储字符串。没有一个字符串的概念是“windows-1252”,“iso-8859-1”,“utf-8”等。你是否试图抛弃字符串中没有Windows中的表示的任何字符-1252代码页? –
@IanBoyd实际上,一个[String](https://msdn.microsoft.com/en-us/library/system.string(v = vs.110).aspx)是一个统计的UTF-16代码单元序列。 (不幸的是,术语Unicode在'Encoding.Unicode'和Win32 API中被误用了.Unicode是一个字符集,而不是编码。UTF-16是Unicode的几种编码之一。) –
你做出不正确的操作:你以utf8编码制作字节数组,但通过iso解码读取它们。如果你想让编码符号的字符串,它简单地调用** string msg = iso.GetString(iso.GetBytes(Message)); ** – StuS