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 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
Mysql - 常用函数 每天积极向上
Apr 05 MySQL
详解MySQL 用户权限管理
Apr 20 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
浅谈Mysql多表连接查询的执行细节
Apr 24 MySQL
MySQL 表空间碎片的概念及相关问题解决
May 07 MySQL
如何用Navicat操作MySQL
May 12 MySQL
mysql升级到5.7时,wordpress导数据报错1067的问题
May 27 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
MySQL七种JOIN类型小结
Oct 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
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
与Math.pow 相反的函数使用介绍
2014/08/04 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
详解如何修改python中字典的键和值
2020/09/29 Python
新闻学专业应届生求职信
2013/11/08 职场文书
管理心得体会
2013/12/28 职场文书
八年级音乐教学反思
2014/01/09 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
大学生暑期实践报告
2015/07/13 职场文书
高中团支书竞选稿
2015/11/21 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
JavaScript实现栈结构详细过程
2021/12/06 Javascript