记录记录PHP post提交表单导入mysql中文乱码的问题
关于乱码,这是个糟糕的问题!涉及到很多地方
解决思路:程序所涉及的环境字符集不一致导致
mysql出现乱码一般是mysql数据库内部的字符集出现问题
为了防止出现一些后续的问题
在建库的时候就要设置默认字符集
CREATE DATABASE 库名 DEFAULT CHARSET=UTF8;
其他的一些操作
查看mysql各个地方的字符集设置情况
SHOW VARIABLES LIKE 'character%';
顺便记录一下mysql数据库 各个字符集的作用
character_set_client
解析客户端sql语句的字符集
character_set_connection
通常与character_set_client保持一致,当进入查询时,会将sql语句 由character_set_client转变为 character_set_connection字符集
character_set_database
新建数据库的默认字符集,通常建库的时候就指定一下默认的字符集
默认数据库的字符集决定了新建表的默认字符集
默认表的字符集又决定了字段的默认字符集
换句话说,如果我们建库指定了默认字符集,建表的时候就不用去指定默认字符集了
如果建表,建库都不指定默认字符集,默认就会用character_set_database初始的字符集去建表,
而通常情况下,初始的character_set_database字符集是西欧的字符集,对英文友好,对中文不友好!
character_set_filesystem
文件系统字符集编码,主要用于解析文件名称的字符串字面值(默认就好)
character_set_results
返回给客户端的查询结果或者错误提示的字符集
character_set_server
服务器端的默认编码字符集
character_set_system
mysqlsever储存元数据的编码字符集(默认就好)
character_set_dir
mysql字符集编码储存的文件夹
如果需要改动某个字符集,可以用以下类似的语句
SET character_set_server = utf8;
如果以上都改了,还是出现问题,那说明mysql内部的字符集是没有问题的,剩下的应该就是外部环境的字符集的问题
网上找了很久,发现可能是操作系统字符集的问题
打开cmd 输入 chcp 查看活动代码页
win10默认用的GBK字符集,修改字符集为 UTF-8
修改重启后,查看字符活动代码页
这时候再次POST提交表单,导入数据库中文就可以正常显示了!