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 相关文章推荐
数据库连接池
Apr 06 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
Windows 64位 安装 mysql 8.0.28 图文教程
Apr 19 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
mysql查看表结构的三种方法总结
Jul 07 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 模拟POST提交的2种方法详解
2013/06/17 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
代码生成器 document.write()
2007/04/15 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Linux下调试Python代码的各种方法
2015/04/17 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
超级搞笑检讨书
2014/01/15 职场文书
《争吵》教学反思
2014/02/15 职场文书
销售内勤岗位职责
2014/04/15 职场文书
中秋节祝酒词
2015/08/12 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL