Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有从PHP插入时,才能正确显示特殊字符_Php_Mysql_Utf 8_Character Encoding_Navicat - Fatal编程技术网

只有从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()之前返回了。。。愚蠢的错误。。。不管怎样,这个函数和你的解决方案解决了它,所以非常感谢你!