温馨提示:本文翻译自stackoverflow.com,查看原文请点击:.net - C# Convert string from UTF-8 to ISO-8859-1 (Latin1) H
.net c# encoding utf-8 iso-8859-1

.net - C#将字符串从UTF-8转换为ISO-8859-1(Latin1)H

发布于 2020-04-16 11:19:10

我已经用谷歌搜索了这个话题,并且已经查看了所有答案,但还是不明白。

基本上,我需要将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 = "�ä�ö�õ�ü

我在这里做错了什么?

查看更多

提问者
Daniil Harik
被浏览
52
32.8k 2014-04-24 03:06

在尝试将其解码为目标编码之前,请使用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);