写“<”的区别是什么?和“<”在数据库中?

时间:2013-05-20 16:08:59

标签: character-encoding

我有一个用latin1_swedish_ci编码的数据库。我想知道在数据库中插入&lt;<之间的区别是什么?

3 个答案:

答案 0 :(得分:5)

字符编码不同。 &lt;只是<的XML转义形式,通常用于防止它被解释为XML(或HTML)元素的开头。这种预防通常用作XSS prevention的一部分。这通常在用户控制的数据即将在HTML输出中内联时应用,而不是在用户控制的输入即将存储在DB中时应用。

因此,如果您在数据库中看到&lt;而不是<,而它应该是<,那么它只能意味着某些XML / HTML转义逻辑正在错误的时刻运行。

另见:

答案 1 :(得分:1)

&lt;HTML character reference,指的是<字符。区别在于&lt;占用四个字符空间,而<只占用一个字符。这都与数据库有关。

答案 2 :(得分:1)

第一个是HTML实体 - 换句话说,如果你想在HTML中输出一个,那就是你如何逃避<。第二个是文字字符。

通常,您的数据库不应包含采用特定输出格式的内容(在本例中为HTML / XML)。例如,如果该内容以纯文本格式提供,则您需要显示<,而不是&lt;。因此,您应该将<存储在数据库中,并在呈现HTML输出时转义为&lt;