问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL 中文字符乱码问题

发布网友 发布时间:2022-04-07 14:22

我来回答

6个回答

懂视网 时间:2022-04-07 18:43

推荐:《mysql视频教程》

mysql数据表中文乱码解决办法

在往 mysql 数据库中插入数据的时候出现数据 ( 汉字 ) 乱码情况:

在把数据库,数据表的编码改为UTF-8后,还是乱码。

edf6ec50db88676d679cf576b002996.png

Mysql的默认编码方式是Latin1,不支持中文,因此,如果要让mysql支持中文的话需要把数据库默认的编码修改为gbk或者utf8。

1.查看数据库的编码方式

mysql>show variables like 'character%';

d675682626fb9400a08c4959ca9db20.png

上面的各种字符设置必须一致,只是简单的对数据库、数据表设置编码格式不能完全解决乱码问题,我是将上面的说有字符编码全设置为utf8后解决的乱码问题。

对上面的信息加以说明:

 | character_set_client:客户端请求数据的字符集(编码方式)
 | character_set_connection:从客户端接收到数据,再传输的字符集(建立连接使用的编码)
 | character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server 指定的字符集,
    这个变量建议由系统自己管理,不要人为定义。
 | character_set_results:结果集的字符集
 | character_set_server:数据库服务器的默认字符集
 | character_set_system:这个值总是utf8,不需要设置,是存储系统元数据的字符集

上述变量的值不一致或者显示乱码时,可以通过如下命令来修改:

mysql> SET character_set_client = utf8; 
mysql> SET character_set_results = utf8; 
mysql> SET character_set_connection = utf8;

2、找到MySQL5.0安装目录下编辑打开my.ini文件,修改为:

[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8

3、重新启动数据库。

热心网友 时间:2022-04-07 15:51

一、转码失败
在数据写入到表的过程中转码失败,数据库端也没有进行恰当的处理,导致存放在表里的数据乱码。
针对这种情况,前几篇文章介绍过客户端发送请求到服务端。
其中任意一个编码不一致,都会导致表里的数据存入不正确的编码而产生乱码。
比如下面简单一条语句:
set @a = "文本字符串";
insert into t1 values(@a);
1. 变量 @a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 @a 的编码。
2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。
3. 经过 MySQL 一系列词法,语法解析等处理后,写入到表 t1,表 t1 的编码为 C。
那这里编码 A、编码 B、编码 C 如果不兼容,写入的数据就直接乱码。
二、客户端乱码
表数据正常,但是客户端展示后出现乱码。
这一类场景,指的是从 MySQL 表里拿数据出来返回到客户端,MySQL 里的数据本身没有问题。客户端发送请求到 MySQL,表的编码为 D,从 MySQL 拿到记录结果传输到客户端,此时记录编码为 E(CHARACTER_SET_RESULTS)。
那以上编码 E 和 D 如果不兼容,检索出来的数据就看起来乱码了。但是由于数据本身没有被破坏,所以换个兼容的编码就可以获取正确的结果。
这一类又分为以下三个不同的小类:
1)字段编码和表一致,客户端是不同的编码
比如下面例子, 表数据的编码是 utf8mb4,而 SESSION 1 发起的连接编码为 gbk。那由于编码不兼容,检索出来的数据肯定为乱码。
2)表编码和客户端的编码一致,但是记录之间编码存在不一致的情形
比如表编码是 utf8mb4,应用端编码也是 utf8mb4,但是表里的数据可能一半编码是 utf8mb4,另外一半是 gbk。那么此时表的数据也是正常的,不过此时采用哪种编码都读不到所有完整的数据。这样数据产生的原因很多,比如其中一种可能性就是表编码多次变更而且每次变更不彻底导致(变更不彻底,我之前的篇章里有介绍)。举个例子,表 t3 的编码之前是 utf8mb4,现在是 gbk,而且两次编码期间都被写入了正常的数据。
3)每个字段的编码不一致,导致乱码
和第二点一样的场景。不同的是:非记录间的编码不统一,而是每个字段编码不统一。举个例子,表 c1 字段 a1,a2。a1 编码 gbk,a2 编码是 utf8mb4。那每个字段单独读出来数据是完整的,但是所有字段一起读出来,数据总会有一部分乱码。
三、LATIN1
还有一种情形就是以 LATIN1 的编码存储数据
估计大家都知道字符集 LATIN1,LATIN1 对所有字符都是单字节流处理,遇到不能处理的字节流,保持原样,那么在以上两种存入和检索的过程中都能保证数据一致,所以 MySQL 长期以来默认的编码都是 LATIN1。这种情形,看起来也没啥不对的点,数据也没乱码,那为什么还有选用其他的编码呢?原因就是对字符存储的字节数不一样,比如 emoji 字符 "❤",如果用 utf8mb4 存储,占用 3 个字节,那 varchar(12) 就能存放 12 个字符,但是换成 LATIN1,只能存 4 个字符。

热心网友 时间:2022-04-07 17:09

把这儿的

GB2312_chinese_ci 改成 UTF8_general_ci ,另外把调用数据库时字符都统一为

utf-8

热心网友 时间:2022-04-07 18:44

你用的是php。我用的是jsp,虽有不同但是数据库大概路子应该是一样的。有几个地方我给你提一下:1.建mysql数据库时我要同时选所建数据库字符集为gbk。你这里没有设置。
2.建表之前要加set NAMES 'gbk'; 这句你好像有了:mysql_query ("SET NAMES 'GB2312'"); 把gb2312改成gbk

热心网友 时间:2022-04-07 20:35

多半是字符集不统一造成的追问应该是字符集不统一造成的,怎么修改呢?

热心网友 时间:2022-04-07 22:43

mysql_query ("SET NAMES 'GB2312'");
GB2312改成utf-8试看看。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
酸醋萝卜怎么做又脆又好吃 账簿启用及交接表填写的步骤 账簿启用及交接表怎样填写 说的是精神分裂症,吃了二年多的药,分别是利培酮片,苯海索片,补脑_百度... 精神分裂症急性期适当的治疗方法 快递三斤荔枝的话要多少钱? 求高手指点一个plc编程问题,计算时间差,还有时间比较后,输出执行... 你好高手 我现在买了个松下fp0的PLC我想写一个步进程序,请问能否... 【plc执行程序步骤】 plc执行程序时 若有一步不能满足条件而执行不了... 电脑屏幕的壁纸怎么更换? 冬至的民俗活动 深圳门禁安装 孕妇梦见白马在踢坟墓叫搬扦坟墓什么意思 做梦梦到搬了个新的房子前后左右脚有两座坟意味着什么? 深圳市宝安区出租屋管理站强制要求出租屋安装门禁系统,不安装就会被封楼。有这回事么? 古诗词70首加80首小学生必备彩线版的书 小学生必背古诗70首(或75首)分类 小学生必备古诗词70首 小学生必背七十首古诗文是什么 小学生必背古诗词 70首 开心全解 小学生必背古诗词70首诗题及作者 小学生必背古诗词70首分类 为什么快手突然发不了作品 钉钉打卡小红花怎么领取 钉钉的专享红包不点会领取吗 注册公司法人需要实名制吗?注册的时候必须得拍照片吗 2018年北京办理企业法人变更需要法人身份证原件吗? 把法人变更,请问我怎么才能变更 EXCEL相同数据合并为一条数据 椰子水弄到了衣服上变黄怎么洗的掉? 新铁锅第一次用怎么去锈味 《送你一朵小红花》可所谓是一枝独秀,这作品真的拍的很棒吗? 怎么去除新炒锅上的机油味,铁锈等异味?怎么解决 马丁·劳伦斯的主要作品 一枝独秀什么意思 怎样去除铁锅上的锈,还有那个铁锈的味道 秦朝的“一枝独秀”李斯,巩固中央集权,可惜被害,但留下了作品 在金庸的笔下哪3位主角被低估了,其中被誉为圣人的是谁? 众芳摇落这首诗写的是什么 《一剪梅》赏析 “一枝独秀”的近义词是什么? 赏析古诗词的一般方法 求鬼雨的资料 “已是悬崖百丈冰,优有花枝俏”是?的作品 一枝独秀,猜数字 为什么钉钉的语音最长只有11秒? 海南省的天气温度有多少? 为什么钉钉只能录十秒的语音,别人能录一分多钟? 海南2月天气怎么样? 海南一冲锋舟水库侧翻致5人遇难,到底是怎么回事?