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 重写查询语句的三种策略
May 10 MySQL
Mysql 如何查询时间段交集
Jun 08 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
深入解析MySQL索引数据结构
Oct 16 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL的InnoDB存储引擎的数据页结构详解
Mar 03 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
进阶篇之linux环境下安装MySQL数据库
Apr 09 MySQL
mysql数据库实现设置字段长度
Jun 10 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
mysql序号rownum行号实现方式
Dec 24 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
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
详谈js模块化规范
2017/07/07 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python 基础知识之字符串处理
2017/01/06 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
python 制作网站小说下载器
2021/02/20 Python
linux面试相关问题
2012/08/11 面试题
培训楼经理岗位责任制
2014/02/10 职场文书
走进敬老院活动总结
2014/07/10 职场文书
国庆节活动总结
2014/08/26 职场文书
学校开学标语
2014/10/06 职场文书
2015年检验科工作总结
2015/04/27 职场文书
2019广播稿怎么写
2019/04/17 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android