latin1字符集的数据转换为utf8字符集

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: latin1字符集的数据转换为utf8字符集

下面模拟把latin1字符集的数据转换为utf8字符集
一、创建测试表和测试数据:
1.修改会话级别的连接字符集
mysql > set names latin1;
查看一下:
\s
2.创建测试表:

mysql> create database test_latin1 charset latin1;
Query OK, 1 row affected (0.00 sec)

mysql> use test_latin1;
Database changed
mysql> create table test_latin1(test varchar(20)) charset latin1;;
Query OK, 0 rows affected (0.01 sec)

3.插入测试数据:

mysql> insert into test_latin1 values('啊'),('拨'),('吃');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from test_latin1;
test

3 rows in set (0.00 sec)

4.另外打开一个终端,查询这个表,你会发现是乱码,因为默认字符集是utf8:

mysql> select * from test_latin1;
test
å•Š
拨
åƒ

3 rows in set (0.00 sec)

二、开始把已有数据进行字符集转换操作

  1. 导出表结构(-d表示只导出表结构,不导出数据):

shell > mysqldump --master-data=2 --single-transaction -R --trigger -u root -p'xxx --default-character-set=utf8 -d test_latin1 test_latin1 > test_latin1.sql

  1. 修改createdb.sql文件中所有的表结构定义中的lantin1为utf8
  2. 确保记录不再被更新,导出所有的记录(不导出建表语句,并按照原有字符集导出数据)

shell > mysqldump --master-data=2 --single-transaction -R --trigger -u root -p'xxx' --quick --no-create-info --extended-insert --default-character-set=latin1 test_latin1 test_latin1 > data.sql

  1. 修改data.sql文件,将set names latin1修改为set names utf8:
  2. 使用新的字符集utf8创建数据库

mysql > create database test_latin1 default charset utf8;

  1. 创建表

shell > mysql -u root -p ‘xx’ test_latin1 < test_latin1.sql

  1. 导入数据

shell > mysql -u root -p ‘x’ test_latin1 < data.sql
查询建库表结构:

mysql> show create database test_latin1;
Database Create Database
test_latin1 CREATE DATABASE test_latin1 /!40100 DEFAULT CHARACTER SET utf8 /

1 row in set (0.00 sec)

mysql> show create table test_latin1;
Table Create Table
test_latin1 CREATE TABLE test_latin1 (

test varchar(20) DEFAULT NULL

1 row in set (0.00 sec)

查询数据:

mysql> select * from test_latin1;
test

3 rows in set (0.00 sec)
注意:选择新的字符集的时候,要注意选择新的字符集最好要比原来的字符集更大,即包含原来的字符集字库,否则,可能出现新的字符集中丢失一部分数据,变成乱码,如:GBK字符集字库大于GB2312,如果把GBK改为GB2312,那么数据导入GB2312字符集的数据库中,就会丢失GB2312字符集不支持的那部分汉字数据。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 JavaScript 前端开发
Unicode 字符集的运用
【8月更文挑战第31天】
43 3
|
3月前
|
存储 测试技术 开发者
字符集与Unicode的详解
【8月更文挑战第6天】本文全面介绍了Python中字符编码与解码的基础及高级应用。首先概述了字符集与编码的概念,重点强调Unicode及其重要性。随后,通过实例展示了Python如何执行基本的编码和解码任务,包括处理Unicode码点、解决编码错误以及指定文件编码。文章还深入探讨了UTF-8的工作原理及如何在Python中利用`codecs`模块自定义编码器,使用`unicodedata`进行Unicode字符处理,以及如何转换文件编码。最后,提出了处理字符编码的最佳实践建议,帮助开发者编写更健壮的代码。
77 2
|
5月前
|
存储 自然语言处理 数据可视化
字符集编码(三):Unicode
中国的 GB 编码和日本的 JIS 编码在兼容 ASCII 的同时,又给 ASCII 中的可见字符做了个“全角”编码(原 ASCII 中的字符被称为“半角”字符)。所谓全角和半角字符,在字形和字意上都完全相同,只是全角字符占用宽度(注意不是字形本身的宽度)是半角字符的两倍(据说是为了中英文混排时的美观效果),按照 Unicode 的设计原则,这种问题应该交由文字渲染程序去处理,
50 1
|
6月前
|
存储 自然语言处理 关系型数据库
字符集详解
字符集详解
68 0
|
存储 JavaScript 程序员
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
860 0