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%都涉及英文字符,你可能不会注意到问题很长一段时间,即使这样,它也只是偶然的字符,但是当你注意到问题时试图恢复可能会令人沮丧.

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...