mysql 编码的问题

(1)

 当使用mysql数据库时,要确定五个编码。(1)首先我们要设置数据库的编码;(2)然后确定程序中的请求和响应的编码和数据库一致;(3)连接数据库的编码和数据库一致,jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8(注意这句话一定不要写错了)(4)页面编码和数据库一致。(5)程序文件编码和数据库一致。

(2)

当以上五中都相同但还是出现插入乱码或查询乱码。你就应该考虑到mysql服务器的编码。mysql默认编码为latin1不支持中文,可以通过show variables like 'character%';查看。需要将以下几个参数的编码设为一致。本人乱码是因为character_set_server 为latin1。而其他几个编码为utf-8.在linux下可以修改my.cnf文件,默认在/etc/my.cnf,在[mysqld]后添加character-set-server = utf8

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql  -uroot –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:
  >show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;
其中,character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
character_set_system
linux可以通过 修改my.conf
windows修改my.ini

在[mysqld]后面加上:
character_set_server=utf8后面的几个语句和这个相似,本处略去。

注意 :如果插入字符包含Emoji表情,则必须在my.conf中添加如下两行(只加入以下两行,其他地方不需要改,当然要保证创建数据库和表编码为utf8mb4)
collation_server = utf8mb4_general_ci
character_set_server = utf8mb4
因为Emoji表情是四个字符,而utf-8是三个字符。所以要改成utf8mb4.


也可以通过命令方式
set character_set_server=utf8 注意是utf8 不是utf-8,后面的几个语句和这个相似,本处略去。
只要保证以上6个采用的编码方式一样,就不会出现乱码问题,如下图。

另一个查看数据库编码的命令:
>show variables like ‘collation%’;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

life1024

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值