我们应该在将特殊字符存储到数据库之前对其进行HTML编码吗?

时间:2011-01-04 21:49:04

标签: encoding character-encoding special-characters

我使用MySQL来存储数据,我的网页都被编码为UTF-8。我有很多葡萄牙语字符,例如çõ,我想知道我是否应该在存储之前将HTML转义为它们。

我们应该将&存储为&吗?那么为何不)?有哪些优点和缺点/最佳实践?

6 个答案:

答案 0 :(得分:51)

存储前不要对字符进行HTML编码。您应该尽可能地存储纯数据形式。需要HTML编码,因为您要在HTML页面上显示数据,因此在处理数据期间进行编码以创建页面。例如,假设您决定使用纯文本电子邮件发送数据。如果您对数据进行了HTML编码,那么现在HTML编码是您必须撤消的障碍。

为您的数据选择规范表单并存储。 UTF-8非常棒,您的数据库支持它(假设您已正确创建了所有表)。只需存储UTF-8。

答案 1 :(得分:7)

出于数据库的目的,不建议HTML编码和存储数据。这样做将使数据仅适用于在HTML页面上呈现(一个目的)以及您需要再次解码的所有其他操作(许多)。这会降低数据库的数据一致性(因为有效性,准确性,可用性受到阻碍)。

答案 2 :(得分:2)

您是否需要搜索它们?我不是MySQL专家,但你可能不得不通过箍来进行搜索。

您是否关注数据的HTML-ness或字符编码?

我想说如果你能避免它,尽量不要在数据库中对字符进行任何特殊编码。搜索,必须记住特殊的入境/出境处理等。

答案 3 :(得分:2)

如果您正在为每次写入执行100或1000的页面演示,那么在进入时的编码将更有效。但在大多数情况下,我猜这种差异可以忽略不计。

但是其他原因(不编码)很好,毫无疑问 - 而且无论如何编码UTF-8喜欢的字符都是没有意义的。

答案 4 :(得分:2)

我认为在进入数据库的过程中进行编码实际上是一种安全风险,因为这意味着你可能不会在数据库和浏览器之间进行编码(因为这会导致双重编码)。这意味着如果现在或将来存在未编码数据进入数据库的路由,那么将以未编码的方式将其发送到浏览器。最好在数据库和浏览器之间进行编码,因此存储未编码的恕我直言。

答案 5 :(得分:1)

我不会在数据库中对其进行编码,除非这样做有明确的价值。您(以及将使用数据的任何其他人)必须记住在使用该数据时取消转义或转义您插入,更新或与该字段比较的任何数据。我不确定逃避它有什么好处,但它可能不值得。