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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
mysql全面解析json/数组
Jul 07 MySQL
SQLServer常见数学函数梳理总结
Aug 05 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
Aug 05 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 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中的类-什么叫类
2006/11/20 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
js代码实现微博导航栏
2015/07/30 PHP
php 问卷调查结果统计
2015/10/08 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
详解php中的implements 使用
2017/06/13 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
学习ExtJS form布局
2009/10/08 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
python3大文件解压和基本操作
2017/12/15 Python
python http接口自动化脚本详解
2018/01/02 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
使用npy转image图像并保存的实例
2020/07/01 Python
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
课堂教学改革实施方案
2014/03/17 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
法人代表资格证明书
2015/06/18 职场文书
小学同学聚会感言
2015/07/30 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
晚会开幕词范文
2016/03/04 职场文书