数据库教程:mysql 乱码字符 latin1 characters 转换为 UTF8详情

背景:目前正在进行业务重构,需要对使用mysql的业务库表进行重新设计,在迁移时,遇到了中文字符乱码问题(源库表的默认编码是latin1,新库表的默认编码为utf8),故重新学习了下mysql编码和解

背景:目前正在进行业务重构,需要对使用mysql的业务库表进行重新设计,在迁移时,遇到了中文字符乱码问题(源库表的默认编码是latin1,新库表的默认编码为utf8),故重新学习了下mysql编码和解码相关知识,并整理了在遭遇乱码时的一些常用技巧。

比如我下面一张表是省市区的编码存储,导入之后数据库变成如下的乱码: 

mysql 乱码字符 latin1 characters 转换为 UTF8详情

这个实际上是latin1字符编码。

如果我们直接查的话,那么需要转换一下:

select id,parent_code,area_code,convert(cast(convert(name using latin1) as binary) using utf8) from cnarea_2020  where parent_code ='110000000000' or parent_code ='110101001000' 

 可以看到如下:

mysql 乱码字符 latin1 characters 转换为 UTF8详情

 已经转成tf8的编码了,已经正常了!

如果我们要使用查询的字段里面包含乱码,我们可以这样使用:

 select * from (select id,parent_code,area_code,convert(cast(convert(name using latin1) as binary) using utf8) as name from cnarea_2020  where city_code ='010') as t where t.name like '%王府井%'

mysql 乱码字符 latin1 characters 转换为 UTF8详情

也就是先把查询的目标转成utf8,然后再进行查询.

当然了,以上是在迁移后,库中是乱码的情况下,进行操作的,那我们需要把编码转成utf8这样不用去改写代码,免去不必要的麻烦!

处理前的编码如下:

mysql 乱码字符 latin1 characters 转换为 UTF8详情

使用如下的操作:

 update cnarea_2020 set       name=convert(cast(convert(name using  latin1) as binary) using utf8),       short_name=convert(cast(convert(short_name using  latin1) as binary) using utf8),       merger_name=convert(cast(convert(merger_name using  latin1) as binary) using utf8)  where 1=1

mysql 乱码字符 latin1 characters 转换为 UTF8详情

 处理后的编码如下:

mysql 乱码字符 latin1 characters 转换为 UTF8详情

这个时候可以直接查询,不用进行转换了! 

mysql 乱码字符 latin1 characters 转换为 UTF8详情

 现在已经是正常的编码了,迁移就成功了,不用再去改代码来处理了!

到此这篇关于mysql 乱码字符 latin1 characters 转换为 utf8详情的文章就介绍到这了,更多相关mysql 乱码转为 utf8内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

需要了解更多数据库技术:mysql 乱码字符 latin1 characters 转换为 UTF8详情,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/1079895.html

(0)
上一篇 2022年4月19日
下一篇 2022年4月19日

精彩推荐