MySQL会出现中文乱码的原因:

1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题
建议使用utf8!

一、避免创建数据库及表出现中文乱码和查看编码方法

1、创建数据库的时候指定编码:

CREATE DATABASE `test`  
CHARACTER SET 'utf8'  
COLLATE 'utf8_general_ci';

2、建表的时候指定编码

CREATE TABLE `user` (  
`ID` varchar(40) NOT NULL default '',  
`UserID` varchar(40) NOT NULL default '',  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

但是如果你已经建了库和表可以通过以下方式进行查询。

1、查看默认的编码格式:

(1)第一种方式修改默认编码latin1

mysql> show variables like "%char%";   
mysql>SET NAMES utf8;

(2)第二种方式修改默认编码latin1

mysql> show variables like "%char%"
mysql>user mydb;
mysql>alter database mydb  character set utf8;

如果到这里已经没有问题了,就不用尝试后面的方法啦!

2、查看test数据库的编码格式:

mysql> show create database test;

3、查看user数据表的编码格式:

mysql> show create table yjdb;

二、避免导入数据有中文乱码的问题

1、将数据编码格式保存为utf-8

设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:

ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

设置表tb_name默认编码为utf8:

ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

导入:

LOAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE user;

2、将数据编码格式保存为utf8

打开要导入的txt文件,另存为的时候选择编码为utf8,就可以啦!

三、网页中乱码的问题

将网站编码设为 utf-8,这样可以兼容。

四、修改配置文件(可选)

在windows系统下

1、在mysql的安装目录下找到my.ini文件(如果没有的话就把my-medium.ini复制,然后重命名为my.ini即可)

2、在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存并关闭

3、重启mysql服务

在linux系统下

1、打开配置文件,我使用的linux版本是ubuntu,配置文件在/etc/mysql/my.cnf

2、在[client]和[mysqld]字段下面均添加default-character-set=utf8,保存并关闭

3、重启mysql服务
注意:
如果重启成功,并查看数据库编码

mysql> show variables like "%char%";

如果在linux下重启mysql服务的时候出现Job failed to start,在window下重启失败,这是因为你安装了高版本的mysql(mysql5.5以上),在高版本对字符编码方式修改的办法中,在[mysqld]下的修改发生了变化,正确方式如下,修改my.cnf或者my.ini文件:

[mysqld]下添加的应该为:
character-set-server=utf8
collation-server=utf8_general_ci

重启mysql,现在再次查看字符编码