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,现在再次查看字符编码
















