我有一个用latin1_swedish_ci编码的数据库。我想知道在数据库中插入<
和<
之间的区别是什么?
答案 0 :(得分:5)
字符编码不同。 <
只是<
的XML转义形式,通常用于防止它被解释为XML(或HTML)元素的开头。这种预防通常用作XSS prevention的一部分。这通常在用户控制的数据即将在HTML输出中内联时应用,而不是在用户控制的输入即将存储在DB中时应用。
因此,如果您在数据库中看到<
而不是<
,而它应该是<
,那么它只能意味着某些XML / HTML转义逻辑正在错误的时刻运行。
答案 1 :(得分:1)
<
是HTML character reference,指的是<
字符。区别在于<
占用四个字符空间,而<
只占用一个字符。这都与数据库有关。
答案 2 :(得分:1)
第一个是HTML实体 - 换句话说,如果你想在HTML中输出一个,那就是你如何逃避<
。第二个是文字字符。
通常,您的数据库不应包含采用特定输出格式的内容(在本例中为HTML / XML)。例如,如果该内容以纯文本格式提供,则您需要显示<
,而不是<
。因此,您应该将<
存储在数据库中,并在呈现HTML输出时转义为<
。