我的数据库中有一个用于单引号的 UTF 代码,但是当尝试在页面上显示它时,由于某种原因,它仍然是 UTF 代码,即使我提供了元标记。我做错了什么?
在数据库中: '
页: '
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
在撇号或双引号的情况下,可能需要能够包含此类字符而不会关闭属性。但是您应该首先关心为什么数据库以这种方式存储数据。如果某个脚本正在执行转义,则可能会错误地执行两次转义。双重转义不会是有害的,但它可能会将用户添加的一些无害转义(例如,如果他们想使用<
或&
)变成这些可见代码。
有时,为了安全起见,这种转义可能表明所有特殊字符都被转义(不仅仅是撇号)(例如,将<
转义到<
中,以便不能使用用户输入的数据添加标签),但双重转义(如示例中所示)可能表明输入已错误地输入到数据库中。如果你&
转换回&
,这至少不应该是HTML的安全问题,但它可能是真正的XML的安全问题。
此外,仅供参考,代替"UTF 代码"的专有术语是 Unicode 数字字符引用。"UTF-8"、"UTF-16"等是编码抽象 Unicode 字符的不同方法,但数字字符引用提供了一种避免字符在未正确支持 Unicode 的程序中损坏的方法,并且它们还使一些不可见或难以看到的字符可见。