一尘不染

UTF-8数据库问题

sql

我有一个具有UTF-8字符集的MySQL表,并尝试通过PHP表单插入该表时,数据库显示以下错误:

PDOStatement :: execute():SQLSTATE [HY000]:常规错误:1366错误的字符串值:’\ xE8’为列…

有问题的字符是“cat”,但考虑到数据库和表设置为UTF-8,我不明白为什么这应该是一个问题。

编辑

我已经直接从mysql终端尝试过,并且遇到了同样的问题。


阅读 175

收藏
2021-03-10

共1个答案

一尘不染

E8大于一字节UTF8字符中的最大可用字符7F:http :
//en.wikipedia.org/wiki/UTF-8

似乎您的连接未设置为UTF8,而是其他一些8位编码(如ISO
Latin)。如果将数据库设置为UTF8,则仅更改数据库内部使用的字符集,连接可能使用不同的默认值(对于较早的MySQL版本,为latin1),因此您应尝试SETCHARACTER SETutf-8在连接到数据库后发送一个初始值。如果可以访问my.cnf,则还可以在此处设置正确的默认值,但请记住,更改默认值可能会破坏在同一主机上运行的所有其他站点/应用程序。

2021-03-10