MySQL无法输入中文字符问题的解决办法

 更新时间:2023年05月23日 10:04:49   作者:烽起黎明  
MySQL无法输入中文的问题大多是由于字符集不匹配所导致的,下面这篇文章主要给大家介绍了关于MySQL无法输入中文字符问题的解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前几日在使用MySQL数据库的时候,出现了一处保存,故作此记录✍

问题描述

下面是我这样exam表的结构

mysql> desc exam;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id      | int(11)      | YES  |     | NULL    |       |
| name    | varchar(50)  | YES  |     | NULL    |       |
| chinese | decimal(3,1) | YES  |     | NULL    |       |
| math    | decimal(3,1) | YES  |     | NULL    |       |
| english | decimal(3,1) | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

然后我使用insert into语句往这个表中插入了一条记录

mysql> insert into exam values (1, '张三', 78, 89, 93);

但是却报出了下面这样的错误

ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1

仔细阅读报错提示后,说是【位于第1行“name”列的字符串值“\xE5\xBC\xA0\xE4\xB8\x89”不正确

问题排查

然后我思考了一下🤔可能是和当前数据库的字符集设置有关系,因为我在插入英文的时候是没有问题的

然后便使用下面这句查看了一下当前我的MySQL的各种编码

show variables like '%character%';

然后一查看就发现我的【character_set_database】数据库字符集为latin1,也就是拉丁文,对于这种字符集来说支持不了中文的

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       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.01 sec)

解决方案

然后来说一下该如何去解决这个问题,这里提供两种解决方案

创建数据库时设置字符集为utf8

create database 数据库名 character set utf8;

例如下面这里,我新创建了一个名为test的数据库,后面跟上character set utf8后,再去查看当前数据库的字符集就是utf8了

mysql> create database test character set utf8;
Query OK, 1 row affected (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     | latin1                                                     |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

💬 那有人就会说:这样不是很麻烦吗,每次去创建数据库都要手动指定一下字符集

是的,所以你可以考虑第二种方案,做到一劳永逸

修改数据库配置文件【比较麻烦】

什么是配置文件?

  • 用户配置文件就是在用户登录电脑时,或是用户在使用软件时,软件系统为用户所要加载所需环境的设置和文件的集合
  • 很多程序,内部支持多种“模式”,可以调整当前程序,让他应用那种模式。 因此就可以借助“开关”来切换模式!软件的开关通常会用一个“图形化界面”,但是对于 MySQL 等专用软件则一般没有对应的图形化界面表示开关。只是通过一个【专门的文件】,来保存这些开关。这个文件就是 “配置文件”

① 而对于MySQL的配置文件就叫做my.ini,我们可以通过【Everything】这个搜索工具来进行查找

② 打开路径后我们就看到了这个文件,当然你也可以直接在C盘的MySQL安装位置中招(MySQL默认安在C盘)

⚠注意看我下面的两个备份文件,在修改重要的配置文件前要先进行备份

③ 然后我们就可以通过记事本等方式去打开这个配置文件

④ 接下去找到这两个地方,把前面的# + 空格去掉,并且在=后面加上utf8【注意这里一点空格也不要加!!!】

⑤ 在上面修改完配置文件,Ctrl + s后,找自己的电脑中找到【服务】,然后往下拉找到有关MySQL的,它便是你的MySQL服务器,重启一下即可

⚠注意在重启前要保证配置文件修改正确,否则MySQL会启动失败的

⑥ 接下去就可以再次启动MySQL创建一个新的数据库去看看我们的数据库默认字符集是否改成utf8了

⚠注意之前创建的那个数据库要删掉,因为其默认的字符集就是[latin1]

⑦ 然后我们再试一下去插入一条带有中文字符的记录,就发现没问题了( •̀ ω •́ )y

mysql> insert into exam values (1, '李四', 79, 82, 92);
Query OK, 1 row affected (0.00 sec)

写在最后

再看完了上面的这些内容后,我们来聊聊有关MySQL报错的问题

如果你使用过MySQL的话,就可以知道我们在初学CRUD的时候,会出现很多的报错,于是很多同学面对英文的报错就不知道该如何是好,就懒得学习了,这其实是不对的 如果英语基础不太好的同学可以把报错的提示放在翻译软件中去进行查看,若是能看懂的话最好,如果看不懂的话可以去百度搜搜看看,学会去发现问题、排查问题,最后解决问题

到此这篇关于MySQL无法输入中文字符问题的解决办法的文章就介绍到这了,更多相关MySQL无法输入中文字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL索引背后的之使用策略及优化(高性能索引策略)

    MySQL索引背后的之使用策略及优化(高性能索引策略)

    MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴
    2012-01-01
  • MySQL数据库优化之分表分库操作实例详解

    MySQL数据库优化之分表分库操作实例详解

    这篇文章主要介绍了MySQL数据库优化之分表分库操作,结合实例形式详细分析了mysql数据库分表分库垂直拆分、水平拆分相关原理以及应用案例,需要的朋友可以参考下
    2020-01-01
  • mysql8.4版本mysql_native_password无法连接问题解决

    mysql8.4版本mysql_native_password无法连接问题解决

    用dbeaver可以直接连接,但是用NAVICAT连接后报错,本文主要介绍了mysql8.4版本mysql_native_password无法连接问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案

    mysql 8.0 找不到my.ini配置文件以及报sql_mode=only_full_group

    MySQL5.7.5及以上版本启用ONLY_FULL_GROUP_BYSQL模式可能导致的问题,本文就来介绍一下找不到my.ini配置文件的解决方法,感兴趣的可以了解一下
    2024-08-08
  • MySQL中因一个双引号错位引发的血案详析

    MySQL中因一个双引号错位引发的血案详析

    这篇文章主要给大家介绍了关于MySQL中因一个双引号错位引发的血案的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MySQL中的HBase、ES的特点和区别解析

    MySQL中的HBase、ES的特点和区别解析

    本文介绍了MySQL、HBase和ElasticSearch的特点和区别,MySQL是一个关系型数据库,支持事务和SQL,而HBase和ElasticSearch是NoSQL数据库,HBase基于HDFS,支持大规模数据的读写,而ElasticSearch是一个分布式的全文搜索引擎,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • Mysql 8 新特性 window functions 的作用

    Mysql 8 新特性 window functions 的作用

    MySQL是众多网站技术栈中的标准配置,是广受欢迎的开源数据库,已经推出了8.0的第一个候选发行版本。接下来通过本文给大家分享Mysql 8 新特性 window functions 的作用,需要的朋友参考下吧
    2017-11-11
  • 使用SQL语句概述-DDL-数据类型

    使用SQL语句概述-DDL-数据类型

    这篇文章主要介绍了使用SQL语句概述-DDL-数据类型,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • mysql数据库连接池配置教程

    mysql数据库连接池配置教程

    在与数据库进行连接的时候,会牵扯到数据库连接池的配置,本文将详细介绍mysql数据库连接池配置,需要了解跟多的朋友可以参考下
    2012-11-11
  • my.ini优化mysql数据库性能的十个参数(推荐)

    my.ini优化mysql数据库性能的十个参数(推荐)

    这篇文章主要介绍了my.ini优化mysql数据库性能的十个参数(推荐),需要的朋友可以参考下
    2015-09-09

最新评论