从数据库输出HTML内容时,浏览器会正确解释某些编码字符,而其他字符则不会。
例如,%20
正确地成为空格,但%AE
不会成为注册商标符号。
我错过了某种内容编码说明符吗?
(注意:我无法真实地将内容更改为,例如®
,因为我无法控制输入编辑器生成的标记)
答案 0 :(得分:2)
%AE
对HTML安全ASCII无效,
您可以在此处查看表格:http://www.ascii.cl/htmlcodes.htm
看起来你正在处理Windows Word编码(windows-1252类似的东西)它真的不会转换为html安全,除非你在中间进行某种翻译。
答案 1 :(得分:2)
字节AE
是注册商标的ISO-8859-1表示。如果您没有看到任何内容,那么显然URL解码器正在使用其他字符集对其进行URL解码。例如UTF-8,此字节不代表任何有效字符。
要解决此问题,您需要使用ISO-8859-1对其进行URL解码,或者将现有数据转换为使用UTF-8进行URL编码。
也就是说,您不应该将HTML(XML) encoding与®
混为%AE
,而应将{{1}}与{{1}}混淆。
答案 2 :(得分:2)
'%20'编码是URL编码。它仅对URL有用,而不是用于显示HTML。
如果要在HTML页面中显示注册字符,您有两个选择:使用HTML实体,或将您的页面传输为UTF-8。
如果你决定使用实体代码,那么集中转换它们相当简单,因为你可以使用数字实体;您不必使用命名实体 - 即使用®
而不是&#reg;
。
如果你需要知道每个角色的实体代码,我发现这个备忘单非常有帮助:http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/
答案 3 :(得分:0)
您使用的服务器端语言是什么?检查URL解码功能。
答案 4 :(得分:0)
如果您使用的是php,则可以使用urldecode()
但是您应该注意+
个字符。