从数据库输出HTML内容时,浏览器可以正确解释某些编码字符,而不能正确解释其他编码字符。
例如,%20正确地成为一个空格,但%AE不会成为注册商标符号。
我是否遗漏了某种内容编码说明符?
(注意:我不能实际地将内容更改为®,因为我无法控制输入编辑器生成的标记)
发布于 2010-12-01 23:45:16
%AE对于HTML safe ASCII无效,您可以在此处查看该表:http://www.ascii.cl/htmlcodes.htm
看起来您正在处理Windows Word编码(windows-1252??类似的东西)它真的不会转换成html安全,除非你在中间做一些翻译。
发布于 2010-12-01 23:48:08
字节AE是注册商标的ISO-8859-1表示。如果您没有看到任何东西,那么显然URL解码器正在使用其他字符集对其进行URL解码。例如,在UTF-8中,此字节不代表任何有效字符。
要解决这个问题,您需要使用ISO-8859-1对其进行URL解码,或者使用UTF-8将现有数据转换为URL编码。
也就是说,您不应该混淆像®这样的HTML(XML) encoding和像%AE这样的URL encoding。
发布于 2010-12-01 23:51:00
'%20‘编码是URL编码。它只适用于URL,而不适用于显示HTML。
如果要在HTML页面中显示reg字符,您有两个选择:使用HTML实体,或以UTF-8格式传输页面。
如果您决定使用实体代码,那么整体转换它们是相当简单的,因为您可以使用数字实体;您不必使用命名实体--即使用®而不是&#reg;。
如果您需要知道每个字符的实体代码,我发现这个小抄非常有用:http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/
https://stackoverflow.com/questions/4326081
复制相似问题