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
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
MySQL 数据类型选择原则
May 27 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL 原理与优化之Limit 查询优化
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读取IMAP邮件
2006/10/09 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Python字典底层实现原理详解
2019/12/18 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
法律工作求职自荐信
2013/10/31 职场文书
人事主管岗位职责范本
2013/12/04 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
精彩的广告词
2014/03/19 职场文书
程序员求职信
2014/04/16 职场文书
企业挂职心得体会
2014/09/10 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
单位实习鉴定评语
2015/01/04 职场文书
销售经理工作检讨书
2015/02/19 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
《司马光》教学反思
2016/02/22 职场文书