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 Show Profile
Apr 05 MySQL
数据库连接池
Apr 06 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
MySQL数据库必备之条件查询语句
Oct 15 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 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缓存类实例
2014/07/18 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
Python程序设计入门(3)数组的使用
2014/06/16 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python实现windows下文件备份脚本
2018/05/27 Python
Python实现的读写json文件功能示例
2018/06/05 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
Django celery异步任务实现代码示例
2020/11/26 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
婚前协议书范本两则
2014/10/16 职场文书
团拜会主持词
2015/07/04 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
js Proxy的原理详解
2021/05/25 Javascript