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