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服务添加 iptables防火墙策略的方案
Apr 29 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
MySQL中VARCHAR与CHAR格式数据的区别
May 26 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
MySQL数据库 任意ip连接方法
May 20 MySQL
mysql数据库如何转移到oracle
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
php的memcached客户端memcached
2011/06/14 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
PHP实现货币换算的方法
2014/11/29 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php车辆违章查询数据示例
2016/10/14 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
js实现消息滚动效果
2017/01/18 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python开发简易版在线音乐播放器
2017/03/03 Python
python对象与json相互转换的方法
2019/05/07 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python matplotlib拟合直线的实现
2019/11/19 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
个人求职信范文分享
2014/01/06 职场文书
精彩的英文自荐信
2014/01/30 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript