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 22 MySQL
教你解决往mysql数据库中存入汉字报错的方法
May 06 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
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
很好用的PHP数据库类
2009/05/27 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
js图片预加载示例
2014/04/30 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
深入浅析JavaScript中的constructor
2016/04/19 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
angular学习之动态创建表单的方法
2018/12/07 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python双向循环链表实现方法分析
2018/07/30 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python调用c++传递数组的实例
2019/02/13 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
文科毕业生自荐书范文
2014/04/17 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
大学生受助感言
2015/08/01 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers