解决Mysql存储中文的问题
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_database和character_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存储中文的问题的更多相关文章
- 关于MYSQL存储中文问题
最近在学习MYSQL时遇到了不能存储中文的问题,在网上找了很多类似的方法,最后都失败了(失败原因:修改完my.cnf文件后mysql server重新启动失败),濒临崩溃的时候重装了下mysql(Ub ...
- 分享一个解决MySQL写入中文乱码的方法
分享一个解决MySQL写入中文乱码的方法 之前有发帖请教过如何解决MySQL写入中文乱码的问题.但没人会,或者是会的人不想回答.搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件 ...
- 解决cookies存储中文报错问题
URLEncoder.encode("username", "UTF-8"); URLDecoder.decode("123", " ...
- Windows本地解决MySql插入中文乱码问题
JSP页面输入的数据也要转化UTF8的编码字符串在传人数据库 一劳用逸 在 MySQL 的安装目录下有一个 my.ini 配置文件,通过修改这个配置文件可以一劳永逸的解决乱码问题.在这个配置文件中 [ ...
- MySQL 存储php中json_encode格式中文问题及解决
MySQL 存储php中json_encode格式信息 ,遇到中文时, 会变成一堆类似uxxxx信息. 1. 原因分析:在存储到数据库时!MySQL 不会存储 unicode 字符: MySQL 仅 ...
- 解决mysql中文存储问题
在mysql安装目录下先找到my.ini,给[mysql]和[mysqld]下的default-character-set赋值为utf8 即改为:default-character-set=utf8 ...
- PHP+MySQL存储数据出现中文乱码的问题
PHP+MySQL出现中文乱码的原因: 1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码. 2. 使用MYSQL中创建表.或者选择字段时设置的类型不 ...
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...
- 彻底解决mysql中文乱码的办法 ???
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...
随机推荐
- 文档声明和HTML样式表
文档声明 不是注释也不是元素,总是在HTML的第一行 书写格式:<!DOCTYPE HTML> 是用于通知浏览器目前文档正使用哪一个HTML版本(相关属性 lang) 若不写文档声明,浏览 ...
- CSS3 opacity
opacity用来设置元素的透明度. 值被约束在[0.-1.0]范围内,如果超过了这个范围,其计算结果将截取到与之最相近的值. 0表示完全透明,1表示完全不透明. 浏览器支持: (1).IE浏览器支持 ...
- ionic3带参数返回原来页面
最近用ionic3+angular4做项目.我遇到了个问题,我返回原来页面时一般都会调用this.navCtrl.pop()方法,但这个方法不能携带参数.怎么办? 可以写个回调方法. 我在a页面定义个 ...
- SpringMVC中Controller类的方法返回String不跳转,而是将字符串显示到页面
问题描述: 在spring中,控制层的注解一般都是使用@Controller,如果哪个请求参数需要返回数据的话,我们可以在该方法上配合@ResponseBody注解使用,这也是比较常见的方式了. 今天 ...
- 【C++】智能指针简述(三):scoped_ptr
在介绍scoped_ptr之前,我们先回顾一下前两篇文章的内容. 首先,智能指针采用RAII机制,通过对象来管理指针,构造对象时,完成资源的初始化;析构对象时,对资源进行清理及汕尾. auto_ptr ...
- CMD命令行提示被禁用的情况下如何继续使用命令行工具执行命令
1.直接在Windows搜索 左下 输入要执行的 CMD 命令单句.多句同时执行没有试出来. 暂时记录这一条.2016-12-20
- 在自学css开始就遇到问题,“链入外部样式表”在多浏览器显示问题
在自学css开始就遇到问题,“链入外部样式表”的习题,代码如下:A.被链入的CSS文件代码.css<style type="text/css"><!--h1{b ...
- Docker方式安装QIIME 2
# 下载最新版QIIME 2 docker pull qiime2/core:2017.7 # 测试是否安装成功 docker run -t -i -v $(pwd):/mnt/hgfs/2017 q ...
- [JSOI2012]玄武密码 题解(AC自动机)
显然是AC自动机对吧 插入单词之后把文章在自动机上跑一遍,到达过的节点打上花火标记 之后检查一下每个单词有几个标记即可 可以把题目中的4个字母映射成abcd方便遍历 一定要记得把文章也映射啊! #in ...
- ExtJs如何判断form表单是否被修改过详解
1.Extjs表单提交主要有三种方式: 1, EXT的form表单ajax提交(默认提交方式) 相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submi ...