我有一个具有UTF-8字符集的MySQL表,并尝试通过PHP表单插入该表时,数据库显示以下错误:
PDOStatement :: execute():SQLSTATE [HY000]:常规错误:1366错误的字符串值:’\ xE8’为列…
有问题的字符是“cat”,但考虑到数据库和表设置为UTF-8,我不明白为什么这应该是一个问题。
编辑
我已经直接从mysql终端尝试过,并且遇到了同样的问题。
E8大于一字节UTF8字符中的最大可用字符7F:http : //en.wikipedia.org/wiki/UTF-8
似乎您的连接未设置为UTF8,而是其他一些8位编码(如ISO Latin)。如果将数据库设置为UTF8,则仅更改数据库内部使用的字符集,连接可能使用不同的默认值(对于较早的MySQL版本,为latin1),因此您应尝试SETCHARACTER SETutf-8在连接到数据库后发送一个初始值。如果可以访问my.cnf,则还可以在此处设置正确的默认值,但请记住,更改默认值可能会破坏在同一主机上运行的所有其他站点/应用程序。
SETCHARACTER SETutf-8