首页 > 解决方案 > 无法将文本从一种编码解码为另一种编码

问题描述

我从 html 网站阅读了一些文本,需要存储数据。我从网站http://alexpad.com/textdecoder知道源编码(iso-8859-1)和目标编码(windows-874)

源文本是“áÁèÃÔÁ”,我需要将其转换为“แม่ริม”但是输出始终是“??????” 它们是 [63,63,63,63,63,63] 的数组

string text = "áÁèÃÔÁ";
Encoding fromEncoding = Encoding.GetEncoding("iso-8859-1");
Encoding toEncoding = Encoding.GetEncoding("windows-874");
byte[] fromBytes = fromEncoding.GetBytes(text);
byte[] toBytes = Encoding.Convert(fromEncoding, toEncoding, fromBytes);
string result = toEncoding.GetString(toBytes);

预期结果是“แม่ริม”实际结果是“??????” 这是错误的

标签: c#character-encoding

解决方案


两种编码之间的差值是 160。那么一个小写字母和另一个大写字母呢?

            string iso = "áÁèÃÔÁ";
            string[] isoBytes = iso.Select(x => ((byte)x).ToString()).ToArray();
            Console.WriteLine("Iso " + string.Join(",",isoBytes));

            string win = "แม่ริม";
            string[] winBytes = win.Select(x => ((byte)x).ToString()).ToArray();
            Console.WriteLine("Windows " + string.Join(",",winBytes));

            Console.ReadLine();

推荐阅读