当前位置: 首页 > news >正文

MySQL-18-mysql source 执行 sql 文件时中文乱码

拓展阅读

MySQL 00 View

MySQL 01 Ruler mysql 日常开发规范

MySQL 02 truncate table 与 delete 清空表的区别和坑

MySQL 03 Expression 1 of ORDER BY clause is not in SELECT list,references column

MySQL 04 EMOJI 表情与 UTF8MB4 的故事

MySQL 05 MySQL入门教程(MySQL tutorial book)

MySQL 06 mysql 如何实现类似 oracle 的 merge into

MySQL 07 timeout 超时异常

MySQL 08 datetime timestamp 以及如何自动更新,如何实现范围查询

MySQL 09 MySQL-09-SP mysql 存储过程

MySQL 09 MySQL-group by 分组

场景

通过 mysql 的命令行连接到 mysql server 服务端,执行对应的 source xxx.sql,发现中文乱码.

确认步骤

文件格式

确保文件编码格式为 UTF-8

mysql client 编码

mysql> SHOW VARIABLES LIKE 'character_set%';                                          
+--------------------------+---------------------------------------------------+      
| Variable_name            | Value                                             |      
+--------------------------+---------------------------------------------------+      
| character_set_client     | utf8                                              |      
| character_set_connection | utf8                                              |      
| character_set_database   | utf8                                              |      
| character_set_filesystem | binary                                            |      
| character_set_results    | utf8                                              |      
| character_set_server     | utf8                                              |      
| character_set_system     | utf8                                              |      
| character_sets_dir       | D:\tool\mysql\mysql-5.7.31-winx64\share\charsets\ |      
+--------------------------+---------------------------------------------------+      
8 rows in set, 1 warning (0.03 sec)                                                   

登录后可以通过这个查看。

修改方式

可以通过 SET NAMES utf8mb4; 设置客户端编码,然后在进行执行。

验证通过。

set names UTF8mb4 命令解释

SET NAMES utf8mb4; 命令用于设置 MySQL 客户端和服务器之间的字符集通信方式。

具体来说,它设置客户端发送的数据、连接字符集以及返回结果的字符集为 utf8mb4

详细解释

SET NAMES utf8mb4; 实际上相当于以下三个设置:

  1. character_set_client:客户端使用的字符集。
  2. character_set_connection:服务器在处理客户端发送的数据时使用的字符集。
  3. character_set_results:服务器返回给客户端的结果使用的字符集。

当你执行 SET NAMES utf8mb4; 时,MySQL 会执行以下等效命令:

SET character_set_client = utf8mb4;
SET character_set_connection = utf8mb4;
SET character_set_results = utf8mb4;

为什么使用 utf8mb4

utf8mb4 是一种扩展的 UTF-8 编码,支持完整的 Unicode 字符集,包括一些不常见的符号和表情符号。

相比之下,utf8 编码只支持最多3个字节的字符,不能完全表示所有的 Unicode 字符。

适用场景

你应该在以下情况下使用 SET NAMES utf8mb4;

  • 当你知道你的数据包含完整的 Unicode 字符集,包括表情符号和其他特殊字符。
  • 当你在执行 SQL 文件之前,确保文件中的字符不会因为字符集不匹配而出现乱码。

示例

假设你有一个包含 Unicode 字符的 SQL 文件,并希望确保数据正确插入到数据库中,可以在执行 source 命令之前运行以下命令:

SET NAMES utf8mb4;
source /路径/到/你的/sql文件.sql;

这样可以确保 SQL 文件中的所有字符都能正确处理和存储。

总结

SET NAMES utf8mb4; 命令在处理包含复杂 Unicode 字符的数据时非常有用,确保客户端和服务器之间的字符集一致,防止出现乱码问题。

参考资料

https://www.jb51.net/database/3110399bu.htm

https://blog.csdn.net/weixin_44147535/article/details/135438169

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • el-date-picker 开始时间选定后,结束时间不可选择开始时间之前的日期
  • C++ | Leetcode C++题解之第221题最大正方形
  • Laravel任务调度:自动化运维的魔法师
  • LabVIEW与OpenCV图像处理对比
  • 【MySQL基础篇】函数及约束
  • Redis进阶教程
  • 硅纪元视角 | 中国电信“星辰大模型·软件工厂”,两分钟完成应用开发,效率飞跃!
  • 【优化算法】梯度下降法-白老爹定理(上)
  • 昇思25天打卡营-mindspore-ML- Day19-应用实践-生成式-DCGAN生成漫画头像
  • BAT-致敬精简
  • MVC(Model-View-Controller)模式
  • 中国星坤X1224系列线对板连接器:小巧稳定,助力物联网终端高效运行
  • Windows下Visual Studio 中配置第一个CUDA工程
  • 生活商城app微信小程序模板源码
  • [C++][ProtoBuf][初识ProtoBuf]详细讲解
  • python3.6+scrapy+mysql 爬虫实战
  • 【附node操作实例】redis简明入门系列—字符串类型
  • HTTP那些事
  • idea + plantuml 画流程图
  • input的行数自动增减
  • input实现文字超出省略号功能
  • JavaScript设计模式之工厂模式
  • Java教程_软件开发基础
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL-事务管理(基础)
  • Python打包系统简单入门
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vue2.x学习三:事件处理生命周期钩子
  • Vue组件定义
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 构造函数(constructor)与原型链(prototype)关系
  • 回顾 Swift 多平台移植进度 #2
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 如何合理的规划jvm性能调优
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 我与Jetbrains的这些年
  • 自动记录MySQL慢查询快照脚本
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​Spring Boot 分片上传文件
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # windows 安装 mysql 显示 no packages found 解决方法
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (c语言)strcpy函数用法
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (转) 深度模型优化性能 调参
  • (转)LINQ之路
  • (转)scrum常见工具列表
  • (自适应手机端)行业协会机构网站模板
  • .NET C# 操作Neo4j图数据库
  • .NET MVC第三章、三种传值方式