mysql 乱码 字符集latin1转UTF8


Posted in MySQL onApril 19, 2022

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

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

mysql 乱码 字符集latin1转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转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转UTF8

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

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

处理前的编码如下:

mysql 乱码 字符集latin1转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转UTF8

 处理后的编码如下:

mysql 乱码 字符集latin1转UTF8

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

mysql 乱码 字符集latin1转UTF8

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

到此这篇关于mysql 乱码字符 latin1 characters 转换为 UTF8详情的文章就介绍到这了!

MySQL 相关文章推荐
mysql优化
Apr 06 MySQL
MySQL InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
MySQL慢查询的坑
Apr 28 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
浅谈mysql增加索引不生效的几种情况
Jun 23 MySQL
MySQL 开窗函数
Feb 15 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
MySQL Server层四个日志的实现
Mar 31 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 MySQL
MySQL深分页问题解决思路
Dec 24 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 #MySQL
为什么MySQL8新特性会修改自增主键属性
SQL语句多表联合查询的方法示例
Apr 18 #MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 #MySQL
MySQL三种方式实现递归查询
Apr 18 #MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Golang连接并操作MySQL
Apr 14 #MySQL
You might like
推荐:极酷右键菜单
2006/11/29 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
使用rollup打包JS的方法步骤
2018/12/05 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python字符遍历的艺术
2008/09/06 Python
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python中的类与对象之描述符详解
2015/03/27 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python中协程用法代码详解
2018/02/10 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
基于Python的OCR实现示例
2020/04/03 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
python如何实现递归转非递归
2021/02/25 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
大三毕业自我鉴定
2014/01/15 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
公司委托书范本
2014/04/04 职场文书
施工安全承诺书
2014/05/22 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
高一语文教学反思
2016/02/16 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers