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 相关文章推荐
教你用eclipse连接mysql数据库
Apr 22 MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 MySQL
SQLServer常见数学函数梳理总结
Aug 05 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python基础梳理(一)(推荐)
2019/04/06 Python
django框架使用方法详解
2019/07/18 Python
python实现批量文件重命名
2019/10/31 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
python实现人工蜂群算法
2020/09/18 Python
Python安装Bs4的多种方法
2020/11/28 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
精伦电子Java笔试题
2013/01/16 面试题
奥巴马就职演讲稿
2014/05/15 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
投诉书范文
2015/07/02 职场文书
小学生暑假安全公约
2015/07/14 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书