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 视图(View)原理解析
May 19 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL下使用Inplace和Online方式创建索引的教程
May 26 MySQL
新手入门Mysql--概念
Jun 18 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
Linux系统下MySQL配置主从分离的步骤
Mar 21 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL索引 高效获取数据的数据结构
May 02 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 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
第五节--克隆
2006/11/16 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python实现的一个p2p文件传输实例
2014/06/04 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
pandas数据处理之绘图的实现
2020/06/15 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
办公室文员岗位职责范本
2014/06/12 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
教师求职自荐信
2015/03/26 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
MySQL分区路径子分区再分区
2022/04/13 MySQL
mysql全面解析json/数组
2022/07/07 MySQL
MySQL索引失效场景及解决方案
2022/07/23 MySQL