首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过C#将Html 8字符集转换为ISO-8859-1

通过C#将Html 8字符集转换为ISO-8859-1
EN

Stack Overflow用户
提问于 2012-07-06 13:54:00
回答 2查看 5K关注 0票数 0

我一直在努力转换属性的html值,但没有成功。

这里是我要转换的HTML (确保字符集不会在这里显示,但是,我看到它和您看到的完全一样)。

代码语言:javascript
复制
<a href="https://sistemas.usp.br/jupiterweb/listarGradeCurricular?codcg=12&amp;codcur=12012&amp;codhab=1&amp;tipo=N" target="_blank">Administração – São Paulo – diurno</a>

好的,这个htmlnode的值是“Administra o-圣保罗- diurno”。

我使用HtmlAgilityPack来解析这个节点的HtmlPage,一旦我到达这个节点,它的innerText值就是这样的:Administração â São Paulo â diurno

我假设页面的原始字符集是UTF-8,因为html上的编码标记是这样对我说的。

如何将这个奇怪的字符串转换为:Administração - São Paulo - Diurno

我已经尝试过这些线程:线一线二,但没有解决我的问题

编辑:我是通过C# WebRequest Get.获得页面的

EDIT2 :添加了HtmlAgilityPack标记

问题是孤立的: WebRequest有时会扰乱Html。

还有其他方法来设置编码吗?我正在尝试:_webReq.Encoding = "ISO-8859-1“

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-06 14:26:09

经过一个小测试后,您可以看到字符串没有正确地被编码回原来的形式。

样本测试:

代码语言:javascript
复制
 var item = "Administração - São Paulo - Diurno";
 Console.WriteLine(item);

 var buffer = Encoding.UTF8.GetBytes(item);
 var item2 = Encoding.Default.GetString(buffer);
 Console.WriteLine(item2);

这些指纹:

代码语言:javascript
复制
Administraçao - Sao Paulo - Diurno
AdministraA§A£o - SA£o Paulo - Diurno

如您所见,原始字符串正在使用UTF8转换为字节,但随后使用默认设置编码将其转换回字符串。

这是错误的。

如果WebRequest.GetResponse()将字符串返回为错误的值,则该方法会出现问题。尝试将HttpWebRequest上的HttpWebRequest属性设置为UTF8。

在设置TransferEncoding属性之前,必须先将SendChunked属性设置为true。通过将TransferEncoding设置为null来清除它对SendChunked的值没有影响。分配给TransferEncoding属性的值替换任何现有内容。

或者,您可以尝试在打开的UTF8上将编码设置为StreamReader。我能看看你的密码吗?

票数 2
EN

Stack Overflow用户

发布于 2017-04-20 15:11:00

我解决了:

代码语言:javascript
复制
    HtmlWeb Webget = new HtmlWeb();
    HtmlDocument doc = new HtmlDocument();
    Webget.AutoDetectEncoding = false;
    Webget.OverrideEncoding = Encoding.UTF8;

    doc_tmp.OptionOutputAsXml = true;
    doc_tmp.OptionReadEncoding = true;
    doc_tmp.OptionFixNestedTags = true;
    doc_tmp.OptionDefaultStreamEncoding = Encoding.UTF8;

            doc_tmp.LoadHtml(tmp.InnerHtml);
            doc_tmp.Save(Console.Out);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11363589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档