在数据库中存储数据时是否需要使用HTML实体?

时间:2012-02-15 18:31:59

标签: php mysql character-encoding

我需要将特殊字符和符号存储到mysql数据库中。所以要么我可以将它存储为'ü'或将其转换为html代码,例如'& uuml;'

我不确定哪个更好。

我也有像'♥','''这样的符号。

请建议哪一个更好?还建议是否有任何替代方法。

感谢。

3 个答案:

答案 0 :(得分:5)

将数据原始保留在数据库中。在您需要HTML实体之前,请不要使用HTML实体。您永远不知道何时可能希望在其他地方使用您的数据,而不是在网页上。

答案 1 :(得分:5)

多年前引入了HTML实体,以便在传输不是二进制安全的情况下通过网络传输字符信息,以及用户代理(浏览器)不支持传输层或服务器的字符集编码的情况。 / p>

由于HTML实体仅包含非常基本的字符(&;a-z0-9),并且这些字符在大多数字符集中具有相同的二进制编码,这是因为这些副作用而且非常安全。

但是,当您在数据库中存储某些内容时,您不会遇到这些问题,因为您通常处于控制状态,并且您知道将文本存储到数据库中的方式和方式。

例如,如果对数据库中的文本允许使用Unicode,则可以存储所有字符,实际上没有任何字符是特殊的。请注意,您需要在此处了解您的数据库,您可以遇到一些技术细节。就像您不知道数据库连接的字符集编码一样,因此您无法准确地告诉您的数据库要存储哪些文本。但通常,您只需存储文本并在以后检索它。没什么特别的。

实际上,当您使用HTML实体而不是普通字符时会有缺点:

  • HTML实体占用的空间更多:ü比LATIN-1,UTF-8,UTF-16或UTF-32中的ü大得多。
  • HTML实体需要进一步处理。需要创建它们,并且在读取时,需要对它们进行解析。想象一下,您需要在数据库中搜索特定文本,否则任何其他操作都需要额外处理。这只是开销。

当你混合这两个概念时,真正的乐趣就开始了。你来到一个你真的不想进入的地方。所以不要这样做,因为你不需要它。

答案 2 :(得分:1)

我的建议会在将其保存到您的数据库时反映其他贡献者,不转换特殊实体

反对转化的一些原因:

  • K.I.S.S principle(我最大的理由不这样做)
  • 大多数实体最终会在转换之前占用更多空间
  • 无法在单词中搜索实体ü[word]+ü+[/word],您必须对ü =>的html等效字符串进行字符串比较。 [word]+ü+[/word]
  • 您的输出可能会从HTML更改为说移动API等,这使转换变得非常不必要。
  • 需要转换数据输入和输出(如果输出从普通HTML更改为其他内容,则需要转换)。