是用mysql的时候,字符编码是个大问题,我一直使用utf8的编码,基本上没什么大问题,就是每次启动mysql的时候都需要设置一下,mysql,时间长了,也怪麻烦的,在网上搜了一下,发现下面的方法能完全解决这个问题,当然如果是自己编译的mysql,在编译的时候最好就指定编码集,然后建库的时候设定默认的编码就好了,这样就不用每次都set names utf8;了:下面是设置方法:

/etc/mysql/ 主要配置文件所在位置 my.cnf 

/var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹 

启动mysql后,以root登录mysql 

>show variables like 'character%'; #执行编码显示 

+--------------------------+----------------------------+ 

| Variable_name | Value | 

+--------------------------+----------------------------+ 

| character_set_client | latin1 | 

| character_set_connection | latin1 | 

| character_set_database | latin1 | 

| character_set_filesystem | binary | 

| character_set_results | latin1 | 

| character_set_server | latin1 | 

| character_set_system | utf8 | 

| character_sets_dir | /usr/share/mysql/charsets/ | 

+--------------------------+----------------------------+ 

在某些时候,我们续要修改mysql默认数据库的编码,以保证某些迁移的程序可以正常显示,编辑my.cnf文件进行编码修改,windows可以直接用Mysql Server Instance Config Wizard 进行设置 

在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件 

找到客户端配置[client] 在下面添加 

default-character-set=utf8 默认字符集为utf8 

在找到[mysqld] 添加 

default-character-set=utf8 默认字符集为utf8 

init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行) 

mysql> show variables like 'character_set_%'; 

+--------------------------+----------------------------+ 

| 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/ | 

+--------------------------+----------------------------+ 

8 rows in set (0.00 sec) 

对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf 

mysql> show variables like 'collation_%'; 

+----------------------+-----------------+ 

| Variable_name | Value | 

+----------------------+-----------------+ 

| collation_connection | utf8_general_ci | 

| collation_database | utf8_general_ci | 

| collation_server | utf8_general_ci | 

+----------------------+-----------------+ 

3 rows in set (0.00 sec) 


============================================



发生如 unknow command "\n" "\'" 或 "\""等,这发生的原因,是编码导致的问题,如果我们的数据库设定为GBK对于utf-8或是二进制文件无法识别,因此在导入时,要设定一下默认数据格式utf8
如mysql -uroot -p testDb < test.sql --default-character-set=utf8