关于&#开头的HTML实体编码的问题

jiezi316 2013-07-23 05:02:08
这2天遇到一个麻烦的事情,就是一个资讯系统的内容中有&#开头的html实体编码。
如果用HtmlDecode处理的话,能够正确显示汉字,但如此一来。将会导致<>等HTML标签被解释。
举例说明如下:

string content = "<font size=\"11\">二郎山<font/>";

该字符串如果直接输出到屏幕,可以正确显示 二郎山,但font标签也会被浏览器解释(这是我不愿意看到的),我想要的输出结果是:
<font size="11">二郎山</font>
即:汉字可以正确显示,而HTML标签被编码不会被浏览器解释。

于是乎在输出之前进行HTML编码处理,但编码后,字符串的内容会变成:
<font size="11">二&#63788;山<font/>
输出到屏幕上<font size="11">二郎山</font>
标签是不会被解释了,但二郎山的郎字又无法显示了。

因为这个汉字“郎”本身就已经是html实体了,所以编码或者解码,她的处理方式就和其他html标签是一样的。我想输出郎字,就必须要解码,但解码后同样会导致<这些符号被解码。

普通的字符“郎”的unicode码是37070,不是63788。两者之间还是有差别。
我想问的是如何将这个HTML实体编码的汉字转换为普通汉字,这样我就可以用HtmlEncode来处理其他html标签了?
...全文
516 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
w_aimee 2013-07-25
  • 打赏
  • 举报
回复
replace("<","<").replace(">",">")
joyhen 2013-07-24
  • 打赏
  • 举报
回复
可以写个方法尝试replace方法替换掉有针对性的字符
踏平扶桑 2013-07-24
  • 打赏
  • 举报
回复
用正则把汉字(就是<font ……>和</font>中间的字)提取出来进行Decode替换回去行不?
jiezi316 2013-07-24
  • 打赏
  • 举报
回复
恩,谢谢各位 其实仅仅只是处理web界面上的显示,我肯定是有办法的。 我其实最想达到的是这样的效果。 就是这个被Decode出来的“郎”,能够转换为真正的 “郎”字。(前面说了,这2种“郎”字的unicode码不一样,所以还是有区别的,被Decode出来的“郎”字再次Encode时会变回&#;的形式,而第2种“郎”字,无论Decode还是Encode都不会发生变化) 这样这个字以后再其他地方,无论如何处理都是不会出问题的。
rayyu1989 2013-07-24
  • 打赏
  • 举报
回复
replace("<","<").replace(">",">")
jiezi316 2013-07-24
  • 打赏
  • 举报
回复
6楼的肯定可以。 但这样的处理方式我个人不是很能接受。因为要对整个内容进行匹配和重新组装。
Ryan1221 2013-07-23
  • 打赏
  • 举报
回复
如果要response.write输出 string content = HttpUtility.HtmlEncode("<font size=\"11\">") + HttpUtility.HtmlDecode("二郎山") + HttpUtility.HtmlEncode("<font/>");
Ryan1221 2013-07-23
  • 打赏
  • 举报
回复
引用 4 楼 jiezi316 的回复:
[quote=引用 2 楼 Ryan1221 的回复:] …… 不能先把二郎Decode 再把整个string Encode吗?
你这个和#1楼的相法一样的,不行的哈。我在.NET和JAVA都测试了。[/quote] string content = "<font size=\"11\">" + HttpUtility.HtmlDecode("二郎山") + "<font/>"; test.InnerText = content; 这样不行吗?
jiezi316 2013-07-23
  • 打赏
  • 举报
回复
引用 2 楼 Ryan1221 的回复:
…… 不能先把二郎Decode 再把整个string Encode吗?
你这个和#1楼的相法一样的,不行的哈。我在.NET和JAVA都测试了。
jiezi316 2013-07-23
  • 打赏
  • 举报
回复
引用 1 楼 liuchaolin 的回复:
string content = Server.HtmlEncode(Server.HtmlDecode("<font size=\"11\">二郎山<font/>")); Response.Write(content); 这样不行?
这样不行,我当时就想到了。再encode就又变回去了。这个decode出来的郎字,和直接定义的郎字,unicode码貌似不一样。
Ryan1221 2013-07-23
  • 打赏
  • 举报
回复
…… 不能先把二郎Decode 再把整个string Encode吗?
md5e 2013-07-23
  • 打赏
  • 举报
回复
string content = Server.HtmlEncode(Server.HtmlDecode("<font size=\"11\">二郎山<font/>")); Response.Write(content); 这样不行?

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧