我正在解析响应中的一些网页内容HttpWebRequest
.
该网页内容正在使用字符集ISO-8859-1
当解析它并最终从响应中得到所需的单词时,我收到了string
带有这样的问号�
我想知道将其转换回可读的正确方法string
.
所以,我尝试的是转换当前单词encoding
into UTF-8
像这样:
(我想知道是否UTF-8
可以解决我的问题)
string word = "ESPA�OL";
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf = Encoding.GetEncoding("UTF-8");
byte[] isoBytes = iso.GetBytes(word);
byte[] utfBytes = Encoding.Convert(iso, utf, isoBytes);
string utfWord = utf.GetString(utfBytes);
Console.WriteLine(utfWord);
然而,utfWord
可变输出ESPA?OL
这仍然是错误的。正确的输出应该是ESPAÑOL
.
如果可能的话,有人可以给我正确的指示来解决这个问题吗?
有问题的词是“ESPAÑOL”。这可以在 ISO-8859-1 中正确编码,因为单词中的所有字符都是ISO-8859-1 中表示 http://en.wikipedia.org/wiki/ISO/IEC_8859-1.
您可以使用以下简单程序亲自查看这一点:
using System;
using System.Diagnostics;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Encoding enc = Encoding.GetEncoding("ISO-8859-1");
string original = "ESPAÑOL";
byte[] iso_8859_1 = enc.GetBytes(original);
string roundTripped = enc.GetString(iso_8859_1);
Debug.Assert(original == roundTripped);
Console.WriteLine(roundTripped);
}
}
}
这告诉您,您需要正确诊断错误字符的来源。当你拥有 � 角色时,为时已晚。信息已丢失。 � 字符的存在表明,在某个时刻,执行了到不包含字符 Ñ 的字符集的转换。
从 ISO-8859-1 到 Unicode 编码的转换将正确处理“ESPAÑOL”,因为该单词可以用 ISO-8859-1 进行编码。
最可能的解释是,在此过程中的某个地方,文本“ESPAÑOL”被转换为不包含字母 Ñ 的字符集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)