乱码问题总结

最近因为mysql乱码问题,花了很多时间,看了网上很多文章。今天将自己遇到的和看到的文章上面的情况整理一下,为了以后查看方便

各编码的关系

因为编程各种规则基本都是外国人指定的,所以外国人写的东西无需对编码进行转换,默认的就是ISO-8859-1;到了中国,就涉及到本土化的问题,中文编码应当是GBK,这是本地化的编码。
而各种标准、各种浏览器一般用的都是ISO-8859-1,所有就造成了两种编码之间的转换。所以后来出现了UTF8,来解决各种编码问题。UTF8基本上包含了地球上所有的可见字符,十分强大。但不幸的是,各种标准并没有按照这一编码来制定,而依然沿用以前的做法。所以,解决各种乱码问题,就成了中国程序员的必不可少的技能之一。

下面是各种编码出现的原因:

IDE环境造成的乱码

目前java编码工具主要就是eclipse和idea,其中idea所有默认编码都是utf-8,所以基本不会出现乱码的情况。

eclipse为了适应中国人编码习惯,当你点击目录中的src,然后点击file->Properties->Resources,你会看到,TextFile Encoding默认是GBK。为了下次不再因为这个问题产生乱码,记得创建文件夹以后就配置一下src的encodeing,还是刚刚的那个路径,改成UTF-8就行了。

POST和GET方法传递参数造成的乱码

可以参考这篇文章:http://www.roobtyan.cn/index.php/2018/04/14/postget_fang_fa_luan_ma_jie_jue_fang_an/

数据库编码格式导致的(mysql)

(2)mysql乱码主要是因为数据库编码格式的问题,这里采用修改MySQL配置文件的方式解决:

查看数据库编码:

show variables like '%char%';

我这个是正常的

找到配置文件位置:find / -name my.cnf

修改配置文件 vi 配置文件位置

我本机为:vi /etc/my.cnf

[mysqld]
character-set-server=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

如下:

然后重启mysql : service mysqld restart

(2)设置之前建的表,查看编码是否是utf-8

show create table 表名;

如果不是,需要改过来:

修改表的编码方式:ALTER TABLE `test` DEFAULT CHARACTER SET utf8;该命令用于将表test的编码方式改为utf8;

修改字段的编码方式:ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 该命令用于将表test中name字段的编码方式改为utf8

(3)我在使用navicat时,连接数据库中,高级选项的编码改成utf-8反而显示为乱码“????”后来修改成自动就显示正常了

 

参考文章:

https://blog.csdn.net/yanmiao0715/article/details/80882935

https://blog.csdn.net/u012410733/article/details/61619656

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值