关于在mysql数据库中插入表格内容的时候出现的编码问题

在使用命令行向MySQL数据库插入utf-8编码的中文内容时遇到错误,错误表现为unicode转义字符。问题主要出在client和result字符集不匹配。通过设置`character_set_client=gbk`和`character_set_results=gbk`解决了乱码问题,但将cmd窗口编码改为utf-8会导致无法输入中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:从控制台,向mysql数据库的表格中通过下列的命令添加中文内容时,出现了编码的问题:

insert  into 数据库名称 (字段) values (值);

笔者的编码格式均为utf-8.

控制台提示了一个错误,错误内容为\uXXXX,其中XXXX为十六进制。这个为unicode的转义字符。

分析:

mysql的内部字符集涉及到了五处地方。分别为

client:客户端告知使用的字符集。
connection:连接数据库使用的字符集。没有指定的话,默认使用服务器字符集。
database :数据库使用的字符集,没有指定的话,默认使用服务器的字符集。
result :是数据库返还给客户端使用的字符集,没有指定的话,使用服务器字符集。
server :服务器安装时指定的字符集设置。
System:是数据库系统使用的字符集。

向控制台,输入:show variables like ('character_set%');出现如下结果:

 

结果验证了,Mysql的字符集。共有五处。

笔者经过分析,问题出现在client字符集,与result字符集的问题上,

因为这两者直接关系了,发送数据的编码格式与接受数据的编码格式。

尝试修改client字符集:向控制台输入以下代码:

set character_set_client=gbk;  (改变客户端的字符集)

出现了下述的结果:

数据能顺利插入数据库,但返回的结果,出现了乱码。

乱码出现的原因:由于服务器返回的数据编码格式为utf-8的编码格式。

而客户端级cmd窗口采用的是gbk的编码进行解析。解析不正确,导致了乱码。

经过把results的字符集改变为gbk之后,即:set character_set_results=gbk;

结果正确显示了,中文字符。

过程图如下。

 

 

总结;cmd窗口只是一个客户端的应用程序。采用的编码,和解码方式直接决定了,向目标发送的数据的编码格式。

接受数据的解码格式。网上也有很多对cmd窗口编码格式的一个更改。笔者就不再这里进行阐述了。

ps:对cmd窗口改为utf-8格式的编码格式时,无法输入中文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值