记录PHP post提交表单导入mysql中文乱码的问题

关于乱码,这是个糟糕的问题!涉及到很多地方

解决思路:程序所涉及的环境字符集不一致导致

  1. mysql出现乱码一般是mysql数据库内部的字符集出现问题
    为了防止出现一些后续的问题
    在建库的时候就要设置默认字符集
    CREATE DATABASE 库名 DEFAULT CHARSET=UTF8;
  2. 其他的一些操作
    查看mysql各个地方的字符集设置情况
    SHOW VARIABLES LIKE ‘character%’;

顺便记录一下mysql数据库 各个字符集的作用
在这里插入图片描述

1. character_set_client

解析客户端sql语句的字符集

2.character_set_connection

通常与character_set_client保持一致,当进入查询时,会将sql语句 由character_set_client转变为 character_set_connection字符集

3. character_set_database

新建数据库的默认字符集,通常建库的时候就指定一下默认的字符集

默认数据库的字符集决定了新建表的默认字符集

默认表的字符集又决定了字段的默认字符集

换句话说,如果我们建库指定了默认字符集,建表的时候就不用去指定默认字符集了

如果建表,建库都不指定默认字符集,默认就会用character_set_database初始的字符集去建表,

而通常情况下,初始的character_set_database字符集是西欧的字符集,对英文友好,对中文不友好!

4.character_set_filesystem

文件系统字符集编码,主要用于解析文件名称的字符串字面值(默认就好)

5.character_set_results

返回给客户端的查询结果或者错误提示的字符集

6.character_set_server

服务器端的默认编码字符集

7.character_set_system

mysqlsever储存元数据的编码字符集(默认就好)

8.character_set_dir

mysql字符集编码储存的文件夹

如果需要改动某个字符集,可以用以下类似的语句

SET character_set_server = utf8;

如果以上都改了,还是出现问题,那说明mysql内部的字符集是没有问题的,剩下的应该就是外部环境的字符集的问题在这里插入图片描述
9.网上找了很久,发现可能是操作系统字符集的问题

打开cmd 输入 chcp 查看活动代码页在这里插入图片描述
win10默认用的GBK字符集,修改字符集为 UTF-8在这里插入图片描述
修改重启后,查看字符活动代码页在这里插入图片描述
这时候再次POST提交表单,导入数据库中文就可以正常显示了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值