mysql中文乱码问题
1、mysql客户端在插入中文字符的时候可能出现乱码问题。
原因: 要解决字符集的问题,首先要知道现在的系统、数据库、表、客户端等使用什么样的字符集,以及系统支持什么字符集等。
2、我百度了好多,说的不是很明确,所以我总结了一下原因。
我在我的数据库中插入数据的时候出现了这个错误:Incorrect string value: '\xB2\xE2\xCA\xD4' for column 'name' at row 1。
其实我安装mysql数据库的时候设置的编码就是utf8,而且我的各个表的字段的值也是utf8。
下面是查看字符集的一些命令:
(1)查看数据库的所有字符集
show character set;或者show char set;
(2)查看当前状态,包含字符集的设置。
status或者/s
(3)查看系统字符集设置
show variables like '%char%';
(4)查看数据库表中的字符集设置
show full columns from tablename;
(5)查看数据库的编码
show create database dbname;
3、修改cmd客户端的编码
(1)查看cmd当前的编码
chcp
(2)修改当前的编码为utf8
chcp 65001
(3) 修改当前的编码为gbk
chcp 936
(4)修改当前的编码为美国英语
chcp 437
修改完了之后,在cmd属性下,修改字体。
4、设置字符集
(1)设置服务端的字符集的编码
在安装MySQL时可以设置服务器的默认编码格式,也可对my.ini做修改,修改[mysqld]里面的character_set_server=utf8,则可设置character_set_server的值。
(2)设置数据库的字符集编码
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8;
(3)设置数据库表的字符集编码
CREATE TABLE `db_name`.`tb_name` (id VARCHAR(50) NOT NULL,name VARCHAR(50) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(4)设置数据库表的列级别的字符集编码
CREATE TABLE `db_name`.`tb_name` ( id varchar(50) NOT NULL, name varchar(50) CHARACTER SET utf8 );
(5)在客户端下设置字符集,
set names gbk;
5、我的这个问题就是在客户端下设置的set names gbk显示出来的是中文,客户端的编码改了好多次都没有改过来。这次,我是在navicat上登录之后,进行的插入,这样插入不会出现乱码。
参考资料:http://blog.csdn.net/sunboyzsm/article/details/17511511 mysql客户端窗口的编码怎么改成UTF-8的
http://ldgliguang.blog.163.com/blog/static/818458201303111452568/ 改变cmd编码
http://www.jb51.net/article/46869.htm 在Windows的CMD中如何设置支持UTF8编码?