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,現在再次查看字符編碼