乱码问题
上面这篇文章介绍了mysql乱码问题的解决方案。下面是我自己的总结。
乱码问题通常因为字符编码的设定不支持中文编码导致的。utf-8支持几乎所有的编码,因此我们的目的是把所有相关的字符编码设定为utf-8. 包含以下几个地方。
- 数据库服务器;
- 数据库;
- 数据库表;
- client;
- 数据库服务器的修改通常是在%MYSQL_HOME%bin/my.ini里面, 比如我的就在这里,去掉注释即可;
## UTF 8 Settings
init-connect=\'SET NAMES utf8\'
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="C:/xampp/mysql/share/charsets"
- 数据库-是指你创建数据库的时候指定的字符集编码。可以通过这个命令查看;
mysql$ show variables like "%char%";
然后通过这个命令修改;
mysql$ ALTER DATABASE
db_name
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- 数据库表-这个可以通过如下命令修改;
mysql$ ALTER TABLE
tb_name
DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
创建数据库表的时候最好在末尾加上如下设置 “ENGINE=InnoDB DEFAULT CHARSET=utf8;”;
create table t_goods_info
(
id int not null auto_increment,
goods_id varchar(30) not null,
goods_name varchar(60) not null,
···
primary key (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 关于client就不多说了,就是你连接数据库的工具,比如windows dos是不支持utf-8的。不管你怎么设置都没办法显示中文了。