只有从PHP插入时,才能正确显示特殊字符
我有一个表只有从PHP插入时,才能正确显示特殊字符,php,mysql,utf-8,character-encoding,navicat,Php,Mysql,Utf 8,Character Encoding,Navicat,我有一个表Users(带有UTF8字符集和UTF8\u general\u ci排序规则),它有lastName列(与表相同的字符集和排序规则)。当我直接从Navicat for MySQL将我的名字(Štěrba)插入此表和列时,它在Navicat中正确显示,但在浏览器中显示不好(输出文档为UTF8,在MySQL_connect()之后,我还使用设置字符集UTF8): 但是,当我使用此查询从PHP执行此插入时: INSERT INTO users (firstName, lastName)
Users
(带有UTF8字符集和UTF8\u general\u ci排序规则),它有lastName
列(与表相同的字符集和排序规则)。当我直接从Navicat for MySQL将我的名字(Štěrba)插入此表和列时,它在Navicat中正确显示,但在浏览器中显示不好(输出文档为UTF8,在MySQL_connect()
之后,我还使用设置字符集UTF8
):
但是,当我使用此查询从PHP执行此插入时:
INSERT INTO users (firstName, lastName) values ('Pavel', 'Štěrba');
它在浏览器中显示正确,但在Navicat中保存如下:
显然,我不能直接从navicat编辑它,因为我会破坏它。。。你知道为什么会这样吗?我是不是错过了什么地方?还是Navicat的问题?谢谢你的提示 在
设置字符集utf8
我希望这有助于你很可能做错了,而不是每个人都使用的工具 不要通过查询来摆弄编码设置!使用 您必须修复数据库中通过PHP到达的所有条目
请注意,“设置字符集”是错误的,尽管它听起来像是正确的。如果无法使用上述PHP函数,则只需使用“SET NAMES utf8” 看起来像是navicat的问题,但我从未使用过它在phpMyAdmin中的显示方式与在navicat中的显示方式相同。navicat使用的是什么字符集(字符集)?根据您的描述,Navicat似乎使用了不正确的字符集(可能是ISO-8859-1)。即使我不使用query并使用
mysql\u set\u charset()
,当直接从Navicat添加lastName时,仍然会出现断字符…根据我的另一个进展,我需要修复这些字符的显示,因为当我通过PHP保存它时,例如“Š”在数据库中被保存为“A”,这个中断顺序……您应该确保UTF-8编码在任何地方都使用。是不是在a)HTTP内容类型
标题中,b)HTML
标记中,c)在接受编码
表单属性中?哦,是我的错,因为在我的connect函数中,在mysql\u set\u charset()之前返回了。。。愚蠢的错误。。。不管怎样,这个函数和你的解决方案解决了它,所以非常感谢你!