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

标签 php mysql character-encoding

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

我不确定哪个更好。

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

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

谢谢。

最佳答案

HTML 实体在多年前被引入以通过网络传输字符信息,当时传输不是二进制安全的,并且用户代理(浏览器)不支持传输层或服务器的字符集编码。

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

但是,当您将某些内容存储在数据库中时,您不会遇到这些问题,因为您通常处于控制之中,并且您知道可以将什么以及如何将文本存储到数据库中。

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

事实上,当您使用 HTML 实体而不是纯字符时存在缺点:

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

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

关于php - 在数据库中存储数据时是否需要使用 HTML 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299152/

相关文章:

php - 将 mySQL 中的阿拉伯语/日语转换为 php?

php - 使用 PHP 存储用户输入数据 24 小时

php - Symfony Doctrine 存储库 (findOneBy) 结果不是对象

php - 我必须阅读并显示存储在数据库中的古吉拉特语字体

php - MySQL InnoDB AUTO_INCREMENT 辅助列

mysql - 仅当 id 在 2 个表(而非第三个表)上匹配时,才将列从一个表更新到另一个表

sql-server - 使用区分大小写的排序规则时,为什么对范围进行过滤会匹配错误的大小写?

php - 查询缓存效率为 2.4%

mysql - Hibernate 中最简单的一对多映射案例在 MySQL 中不起作用

java - 在 Servlet/Tomcat 中获取请求编码