mysql中文亂碼問題--超級全

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

本文參考:http://blog.csdn.net/luoweifu/article/details/8832492

發佈了92 篇原創文章 · 獲贊 29 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章