解决MySQL会出现中文乱码问题的方法


解决MySQL会出现中文乱码问题的方法

1、MySQL会出现中文乱码的原因
当我们在使用MySQL数据库的时候,经常会碰到乱码的问题,看下面的代码。

    mysql> create table test(id int,name varchar(10));
Query OK, 0 rows affected (0.01 sec)

    mysql> insert into test values(1,'宋蔚然');
    ERROR 1366 (HY000): Incorrect string value: '\xE5\xAE\x8B\xE8\x94\x9A...' for column 'name' at row 1
    mysql>
相关学习推荐:mysql视频教程

很显然,当插入中文的时候报错,原因在哪呢?

    mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

character_set_client 客户端使用的字符编码
character_set_connection 数据库链接使用的编码
character_set_database 数据库使用的字符编码
原来是字符编码与服务端、数据库的编码不统一而造成的。

2、MySQL会出现中文乱码的解决方法
方法一:设置names

    mysql> set names latin1;
    
    mysql> set names latin1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from test;
    Empty set (0.00 sec)
    
    mysql> insert into test values(1,'宋蔚然');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from test;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | 宋蔚然    |
    +------+-----------+
    1 row in set (0.00 sec)

再来看一下字符集的设置

     mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | latin1                     |
    | character_set_connection | latin1                     |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | latin1                     |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

字符编码统一就不会出现乱码。
解决乱码问题其实就是将客户端的字符编码与服务端、数据库的编码统一。这里的服务端与数据库编码都是latin1,所有set names latin1即可临时解决乱码问题。

方法二:修改数据库配置文件字符集为UTF8
UTF8支持很多语言体系,因此在生产中强烈建议将字符编码设置UTF8。打开数据库的配置文件,分别在[client],[mysql],[mysqld]下添加如下内容。

    #vi /mysql/data/3306/my.cnf
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    default-storage-engine=INNODB
    character-set-server=utf8
    collation-server=utf8_general_ci

重启数据库

   [root@test ~]# systemctl restart mysqld

重写创建库和表

    mysql> create database test;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use test;
    Database changed
    mysql> create table test(id int,name varchar(10));
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into test values(1,'宋蔚然');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from test;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | 宋蔚然    |
    +------+-----------+
    1 row in set (0.00 sec)

再来看一下字符集的设置

    mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | 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       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

                                   

Trae国内版 Trae国内版

国内首款AI原生IDE,专为中国开发者打造

Trae国内版 2045 查看详情 Trae国内版

1、MySQL会出现中文乱码的原因
当我们在使用MySQL数据库的时候,经常会碰到乱码的问题,看下面的代码。

    mysql> create table test(id int,name varchar(10));
Query OK, 0 rows affected (0.01 sec)

    mysql> insert into test values(1,'宋蔚然');
    ERROR 1366 (HY000): Incorrect string value: '\xE5\xAE\x8B\xE8\x94\x9A...' for column 'name' at row 1
    mysql>

很显然,当插入中文的时候报错,原因在哪呢?

    mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

character_set_client 客户端使用的字符编码
character_set_connection 数据库链接使用的编码
character_set_database 数据库使用的字符编码
原来是字符编码与服务端、数据库的编码不统一而造成的。

2、MySQL会出现中文乱码的解决方法
方法一:设置names

    mysql> set names latin1;
    
    mysql> set names latin1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from test;
    Empty set (0.00 sec)
    
    mysql> insert into test values(1,'宋蔚然');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> select * from test;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | 宋蔚然    |
    +------+-----------+
    1 row in set (0.00 sec)

再来看一下字符集的设置

     mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | latin1                     |
    | character_set_connection | latin1                     |
    | character_set_database   | latin1                     |
    | character_set_filesystem | binary                     |
    | character_set_results    | latin1                     |
    | character_set_server     | latin1                     |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

字符编码统一就不会出现乱码。
解决乱码问题其实就是将客户端的字符编码与服务端、数据库的编码统一。这里的服务端与数据库编码都是latin1,所有set names latin1即可临时解决乱码问题。

方法二:修改数据库配置文件字符集为UTF8
UTF8支持很多语言体系,因此在生产中强烈建议将字符编码设置UTF8。打开数据库的配置文件,分别在[client],[mysql],[mysqld]下添加如下内容。

    #vi /mysql/data/3306/my.cnf
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    default-storage-engine=INNODB
    character-set-server=utf8
    collation-server=utf8_general_ci

重启数据库

   [root@test ~]# systemctl restart mysqld

重写创建库和表

    mysql> create database test;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use test;
    Database changed
    mysql> create table test(id int,name varchar(10));
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into test values(1,'宋蔚然');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from test;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | 宋蔚然    |
    +------+-----------+
    1 row in set (0.00 sec)

再来看一下字符集的设置

    mysql> show variables like '%CHARACTER%';
    +--------------------------+----------------------------+
    | 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       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

以上就是解决MySQL会出现中文乱码问题的方法的详细内容,更多请关注其它相关文章!


# 重写  # 密云区大型网络营销推广  # 个人网站seo最新优化方法  # 惠州家具厂seo工具  # 朝阳网站建设案例介绍  # 萝岗sem网站优化推广费用  # 正规网站建设与优化方案  # seo综合查询中同网  # 上海公司网站建设价格表  # 辽宁关键词排名外包  # seo网络营销实战培训  # MySQL  # 都是  # 客户端  # 国内  # 解锁  # 配置文件  # 看一下  # 镜像  # 再来  # 服务端  # 中文乱码 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: J*aScript类型数组_TypedArray使用  抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍  QQ邮箱官方登录页_腾讯出品安全稳定的邮箱服务  《下一站江湖2》武器获取方法  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  作业帮网页版不用下载入口 在线问老师快速答疑  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  OTT月报 | 2025年9月智能电视大数据报告  如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计  繁花漫画使用教程  word页码灰色不能用如何解决  PHP多语言网站的实现:会话管理与翻译函数优化教程  《浙里办》电子发票开具方法  iQOO手机信号差网络不稳定怎么办 信号问题原因排查与增强设置【攻略】  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  抖音官网入口快速访问 抖音网页版账号注册解析  126邮箱网页在线登录2025_126邮箱网页版入口官方地址  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  为什么XML解析器对大小写敏感? 理解XML规范中的大小写规则与最佳实践  Final Cut Pro视频加EQ教程  《撕歌》会员开通方法  《sketchbook》选中部分图案移动方法  猫眼app抢票快还是小程序快  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  铁路12306怎么申请退票_铁路12306退票申请操作流程  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  我的世界官方网址入口 我的世界游戏主页直达入口  优化Leaflet弹出层图片显示:条件渲染策略  b站怎么用微信登录_b站微信登录方法  动漫之家观看全集库 动漫之家免费资源网地址  解决Go encoding/json 将JSON大数字解析为浮点数的问题  Apple Music无故扣费引质疑  Python中处理嵌套字典与列表的数据提取与过滤教程  WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程  《荔枝fm》导出文件教程  《海底捞》点外卖方法  圆通快递官方入口不需要登录 在线查询入口快速查询  B站怎么开|直播| B站|直播|申请需要什么条件【新手必看】  mysql中如何分析索引使用情况_mysql索引使用分析方法  铁拳8在线玩 铁拳8在线秒玩入口  Golang如何操作指针参数_Go pointer参数传递规则  4399正版网页版入口高清直达链接  如何在CSS中设置背景图像:一个全面指南  向往的生活小游戏启动处_向往的生活小游戏立即启动  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  英雄联盟争者留名活动介绍  《全民k歌》音乐怎么下载到本地2025  Win10如何关闭操作中心通知 Win10免打扰设置全攻略【清爽】  德邦快递查询入口登录官网 德邦快递单号查询系统入口  汽车之家网页版免费登录_汽车之家官网首页直接进入 

 2020-07-06

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.