Mysql无法存储中文或者中文乱码,当然是编码的问题。你可以mysql -u root -p进入Mysql命令行环境,然后输入命令查看当前编码格式:

mysql> show variables like '%char%';

输出:

+--------------------------+----------------------------+
| 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_databasecharacter_set_server的编码格式为latin1,这时候你如果使用INSERT插入中文会报下面的错误:

ERROR 1366 (HY000): Incorrect string value: '\xE5\x93\x88\xE5\x93\x88' for column 'answer' at row 1

我们需要将其改为支持中文的编码格式,比如gb2312,gbk,utf8等。gb2312是简体中文的码,gbk支持简体中文及繁体中文,utf8支持几乎所有字符。这里我们就将其改为utf8

1,用ls命令查找/etc目录下是否有my.cnf文件;

2,如果没有,就要从/usr/share/mysql/下拷贝一个到/etc ,查看/usr/share/mysql/目录下的文件,发现有一个my-default.cnf配置文件,将其拷贝到/etc目录下并将其改名为my.cnf文件:

sudo cp /usr/share/mysql/my-default.cnf /etc/my.cnf

3,修改配置文件my.cnf,在其中添加字符集设置:

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8 [client]
default-character-set=utf8 [mysql]
default-character-set=utf8

4,重启mysql服务:

sudo service mysql restart

5,再进入mysql命令行环境查看编码格式:

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

OK!数据库编码都变为utf8格式了,这时候创建一个数据库,并在其中添加中文

mysql> CREATE DATABASE student;
Query OK, 1 row affected (0.16 sec) mysql> use student;
Database changed
mysql> CREATE TABLE student_info(
-> stu_num varchar(20) PRIMARY KEY NOT NULL,
-> stu_name varchar(20) NOT NULL,
-> stu_age int(3) NOT NULL,
-> stu_class varchar(20) NOT NULL,
-> stu_score int(3) NOT NULL);
Query OK, 0 rows affected (0.38 sec) mysql> INSERT INTO student_info VALUES("U201018113","张三",23,"1106班",86);
Query OK, 1 row affected (0.13 sec) mysql> SELECT * FROM student_info;
+------------+----------+---------+-----------+-----------+
| stu_num | stu_name | stu_age | stu_class | stu_score |
+------------+----------+---------+-----------+-----------+
| U201018113 | 张三 | 23 | 1106班 | 86 |
+------------+----------+---------+-----------+-----------+
1 row in set (0.00 sec)

解决Mysql存储中文的问题的更多相关文章

  1. 关于MYSQL存储中文问题

    最近在学习MYSQL时遇到了不能存储中文的问题,在网上找了很多类似的方法,最后都失败了(失败原因:修改完my.cnf文件后mysql server重新启动失败),濒临崩溃的时候重装了下mysql(Ub ...

  2. 分享一个解决MySQL写入中文乱码的方法

    分享一个解决MySQL写入中文乱码的方法 之前有发帖请教过如何解决MySQL写入中文乱码的问题.但没人会,或者是会的人不想回答.搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件 ...

  3. 解决cookies存储中文报错问题

    URLEncoder.encode("username", "UTF-8"); URLDecoder.decode("123", " ...

  4. Windows本地解决MySql插入中文乱码问题

    JSP页面输入的数据也要转化UTF8的编码字符串在传人数据库 一劳用逸 在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题.在这个配置文件中 [ ...

  5. MySQL 存储php中json_encode格式中文问题及解决

    MySQL 存储php中json_encode格式信息  ,遇到中文时, 会变成一堆类似uxxxx信息. 1. 原因分析:在存储到数据库时!MySQL 不会存储 unicode 字符: MySQL 仅 ...

  6. 解决mysql中文存储问题

    在mysql安装目录下先找到my.ini,给[mysql]和[mysqld]下的default-character-set赋值为utf8 即改为:default-character-set=utf8 ...

  7. PHP+MySQL存储数据出现中文乱码的问题

    PHP+MySQL出现中文乱码的原因: 1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码. 2. 使用MYSQL中创建表.或者选择字段时设置的类型不 ...

  8. MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...

  9. 彻底解决mysql中文乱码的办法 ???

      MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...

随机推荐

  1. leetcode343 Integer Break

    思路: 将n不断拆分3出来直至其小于或等于4. 实现: class Solution { public: int integerBreak(int n) { ] = {, , , }; ) retur ...

  2. Table标题行冻结,数据行滚动的一种方式

    这段时间在做Table标题行冻结,数据行滚动,虽然能实现,但也遇到一些问题,记录下来. 首先说说实现,实现其实不难,估计很多人都能想象出来,那就是标题行与内容行分离.我是这么做的,用两个表格,一个只有 ...

  3. Angular——自定义过滤器

    基本介绍 除了使用AngularJS内建过滤器外,还可以根业务需要自定义过滤器,通过模块对象实例提供的filter方法自定义过滤器. 基本使用 (1)input是将绑定的数据以参数的形式传入 (2)i ...

  4. php经典bug

    <?php $tem = 0=="a"?1:2; echo $tem; ?> 输出结果为:1 原因:在0=="a",这个比较中因为会将字符串&quo ...

  5. JMeter怎样测试WebSocket,如何设置(一)

    一.安装WebSocket取样器 1.从JMeter插件管理器官网下载:https://jmeter-plugins.org/ 把这6个jar包放到C:\JMeter\apache-jmeter-3. ...

  6. blender--(凹凸贴图)................https://jingyan.baidu.com/article/9f63fb917c4becc8400f0ea8.html

    在blender中直接绘制模型凹凸纹理细节 听语音 | 浏览:32 | 更新:2018-02-20 11:18 1 2 3 4 5 6 7 分步阅读 在blender中为了表现更多的模型细节,我们会常 ...

  7. nginx_rewrite规则介绍

    rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能 ...

  8. Pycharm中通过扩展工具添加QTDesigner

    1.在电脑中找到Designer.exe的安装目录: 2.在pycharm中打开file->Settings->Tools->External Tools进行配置: 配置如下图所示: ...

  9. BZOJ1509: [NOI2003]逃学的小孩 (树形DP)

    题意:给一棵树 选三个点A,B,C 求A到B的再从B到C的距离最大值 需要满足AB的距离小于AC的距离 题解:首先树上的最大距离就想到了直径 但是被样例误导了TAT BC两点构成了直径 我一开始以为A ...

  10. C++/C union使用记一下锅

    //首先,学习编程一定要记得加几个群或者加几个讨论组,因为这样你才能不断地进步还有吵架/滑稽 记一下 关于使用union结构体时遇到的一些坑 To zero-initialize an object ...