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 07 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
Mysql案例刨析事务隔离级别
Sep 25 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
mysql 排序失效
May 20 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中ADODB类详解
2008/03/25 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
JavaScript中的排序算法代码
2011/02/22 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
Python 转义字符详细介绍
2017/03/21 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
浅谈Python爬虫基本套路
2019/03/25 Python
python顺序执行多个py文件的方法
2019/06/29 Python
机械设计毕业生自荐信
2014/02/02 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
环保小标语
2014/06/13 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2015年党员承诺书
2015/01/21 职场文书
奖学金感谢信
2015/01/21 职场文书
大学生个人总结范文
2015/02/15 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android