加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP和MySQL之间的字符集

发布时间:2020-12-13 13:18:52 所属栏目:PHP教程 来源:网络整理
导读:我现在有点困惑我有一个与charset = utf8的PDO连接 并且DB使用拉丁语. 这是什么意思 ? 我的想法是,这意味着由PHP发送或从DB接收的每个连接都被编码为utf8.但是我读了很多,DB也应该使用与PHP相同的字符集. 任何人都可以详细解释字符集在PHP和MySQL数据库中的
我现在有点困惑我有一个与charset = utf8的PDO连接
并且DB使用拉丁语.

这是什么意思 ?

我的想法是,这意味着由PHP发送或从DB接收的每个连接都被编码为utf8.但是我读了很多,DB也应该使用与PHP相同的字符集.

任何人都可以详细解释字符集在PHP和MySQL数据库中的作用,以及对齐它们的好处是什么?

假设PHP将一些文本发送到MySQL进行存储,就像这样
INSERT INTO `some_table` ("foo") VALUES 
('The quick brown fox jumps over the lazy dog');

这个查询的基本意图显然是告诉MySQL存储字符串.快速的棕色狐狸跳过懒狗进入数据库.

如果PHP配置为使用UTF-8,则意味着当它将人类可读字符转换为二进制时 – 为了将其传输到MySQL – 它将使用UTF-8编码系统转换字符.MySQL可以读取以UTF-8编码的字符,因此在理解数字编码序列意味着T和h和e等方面没有问题 – 用人类可读的字符.如果MySQL配置为使用latin1在some_table表中存储数据,则当它接收到字符串时,它会将字符从其UTF-8编码转换为latin1等值,然后再将数据保存到硬盘.在这种情况下没有问题 – 因为英文字母字符可以用UTF-8和Latin1表示.但是,如果PHP发送的字符串包含只能由UTF-8而不是Latin1表示的字符,则会出现问题.一个聪明的报价“.当MySQL试图将智能引用“转换为数字形式时,它将无法 – 因为Latin1字面上没有定义的数字编码来代表”.我不确定MySQL遇到这种情况时的确切错误管理过程是什么,以及情况是否可恢复,但最终结果是底层编码将被破坏且无法使用.因为这个问题只发生在两个系统无法表示的那些字符上 – 如果你所有通信的99%都涉及英文字符,你可能不会注意到问题很长一段时间,即使这样,它也只是偶然的字符,但是当你注意到问题时试图恢复可能会令人沮丧.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读