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 28 MySQL
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
May 06 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
MySQL通过binlog恢复数据
May 27 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 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 autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
帝国cms目录结构分享
2015/07/06 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
javascript动态加载三
2012/08/22 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
python模块之StringIO使用示例
2015/04/08 Python
python购物车程序简单代码
2018/04/18 Python
python保存数据到本地文件的方法
2018/06/23 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
python调用接口的4种方式代码实例
2019/11/19 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
美术教师自我鉴定
2014/02/12 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
招聘专员岗位职责
2014/03/07 职场文书
治安消防安全责任书
2014/07/23 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis