首先:(聯盟電腦:http://it.010lm.com)
用 show variables like “%colla%”;show varables like “%char%”;這兩條命令檢視資料庫與服務端的字符集設定(聯盟電腦:http://it.010lm.com)
如果檢視出來都是 gbk2312,或 gbk,那麼就只能支援簡體中文,繁體和一些特殊符號是不能插入的,我們只有修改字符集為 UTF-8,(聯盟電腦:http://it.010lm.com)
修改方法如下:(聯盟電腦:http://it.010lm.com)
用記事本或 UitraEdit 開啓 mysql 資料庫安裝目錄下的 my.ini 檔案開啓, 然後 Ctrl+F 搜尋 default-character-set,將後面的字符集修改為 UTF8,注意要修改兩個地方,一個事客户端的,一個是服務端的。(聯盟電腦:http://it.010lm.com)
然後儲存,重啓 mysql 服務、、進去繼續用 show variables like “%colla%”;show variables like “%char%”;著兩條語句查詢一下字符集, 到此就配置完成了。(聯盟電腦:http://it.010lm.com)
注意:(聯盟電腦:http://it.010lm.com)
如果以前建有資料庫沒有刪除的 請用 show database 資料庫名;和 show create table 表名;檢視一下資料庫和表的字符集是否為 UTF8 , 因為修改 my.ini 檔案,它不能修改原來資料庫的的字符集。在命令列下面可以用(聯盟電腦:http://it.010lm.com)
alter database 資料庫名 character set “字符集”; 命令來修改資料庫字符集(聯盟電腦:http://it.010lm.com)
還有一點要注意的是,修改為 UTF8 以後,在命令列下面中文是亂碼的,只輸出到頁面或控制枱是正常的,這個問題我也上網查了一下,貌似命令列下面不支援 UTF8,我也不太清楚。(聯盟電腦:http://it.010lm.com)
當修改以後,在命令列下面如果要插入中文,可以在插入語句之前執行,set names gbk2312;就可以插入中文了,但是不能插入繁體和一些特殊符號。(聯盟電腦:http://it.010lm.com)
以上就是這幾天解決亂碼的成果。希望各位大蝦多多指教。(聯盟電腦:http://it.010lm.com)
下面抽點空給大家整理些關於 MySQL 會出現中文亂碼的原因不外乎下列幾點。(聯盟電腦:http://it.010lm.com)
1.server 本身設定問題,例如還停留在 latin1
2.table 的語系設定問題 (包含 character 與 collation)
3. 客户端程式 (例如 php) 的連線語系設定問題
(聯盟電腦:http://it.010lm.com)
強烈建議使用 utf8!!!!
(聯盟電腦:http://it.010lm.com)
utf8 可以相容世界上所有字元!!!!(聯盟電腦:http://it.010lm.com)
一、避免建立資料庫及表出現中文亂碼和檢視編碼方法(聯盟電腦:http://it.010lm.com)
1 、建立資料庫的時候:(聯盟電腦:http://it.010lm.com)
CREATE DATABASE `test` CHARACTER SET ‘utf8’ COLLATE ‘utf8_general_ci’;
2 、建表的時候(聯盟電腦:http://it.010lm.com)
CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default ”, `UserID` varchar(40) NOT NULL default ”, ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這 3 個設定好了,基本就不會出問題了, 即建庫和建表時都使用相同的編碼格式。
(聯盟電腦:http://it.010lm.com)
但是如果你已經建了庫和表可以通過以下方式進行查詢。(聯盟電腦:http://it.010lm.com)
1. 檢視預設的編碼格式:(聯盟電腦:http://it.010lm.com)
mysql show variables like “%char%”; +————————–+—————+ | Variable_name | Value | +————————–+—————+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +————————–+————-+
注:以前 2 個來確定, 可以使用 set names utf8,set names gbk 設定預設的編碼格式;(聯盟電腦:http://it.010lm.com)
執行 SET NAMES utf8 的效果等同於同時設定如下:(聯盟電腦:http://it.010lm.com)
SET character_set_client=’utf8′; SET character_set_connection=’utf8′; SET character_set_results=’utf8′;
2. 檢視 test 資料庫的編碼格式:(聯盟電腦:http://it.010lm.com)
mysql show create database test; +————+————————————————————————————————+ | Database | Create Database | +————+————————————————————————————————+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | +————+————————————————————————————————+
3. 檢視 yjdb 資料表的編碼格式:(聯盟電腦:http://it.010lm.com)
mysql show create table yjdb; | yjdb | CREATE TABLE `yjdb` ( `sn` int(5) NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL, `brc` varchar(6) NOT NULL, `teller` int(6) NOT NULL, `telname` varchar(10) NOT NULL, `date` int(10) NOT NULL, `count` int(6) NOT NULL, `back` int(10) NOT NULL, PRIMARY KEY (`sn`), UNIQUE KEY `sn` (`sn`), UNIQUE KEY `sn_2` (`sn`) ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |
二、避免匯入資料有中文亂碼的問題(聯盟電腦:http://it.010lm.com)
1: 將資料編碼格式儲存為 utf-8(聯盟電腦:http://it.010lm.com)
設定預設編碼為 utf8:
(聯盟電腦:http://it.010lm.com)
set names utf8;
(聯盟電腦:http://it.010lm.com)
設定資料庫 db_name 預設為 utf8:(聯盟電腦:http://it.010lm.com)
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
設定表 tb_name 預設編碼為 utf8:(聯盟電腦:http://it.010lm.com)
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
匯入:(聯盟電腦:http://it.010lm.com)
LOAD DATA LOCAL INFILE ‘C:utf8.txt’ INTO TABLE yjdb;(聯盟電腦:http://it.010lm.com)
2: 將資料編碼格式儲存為 ansi(即 GBK 或 GB2312)(聯盟電腦:http://it.010lm.com)
設定預設編碼為 gbk:
(聯盟電腦:http://it.010lm.com)
set names gbk;
(聯盟電腦:http://it.010lm.com)
設定資料庫 db_name 預設編碼為 gbk:(聯盟電腦:http://it.010lm.com)
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
設定表 tb_name 預設編碼為 gbk:(聯盟電腦:http://it.010lm.com)
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
匯入:(聯盟電腦:http://it.010lm.com)
LOAD DATA LOCAL INFILE ‘C:gbk.txt’ INTO TABLE yjdb;
(聯盟電腦:http://it.010lm.com)
注:1.UTF8 不要匯入 gbk,gbk 不要匯入 UTF8;
(聯盟電腦:http://it.010lm.com)
2.dos 下不支援 UTF8 的顯示;(聯盟電腦:http://it.010lm.com)
三、解決 WordPress 網頁中亂碼的問題
(聯盟電腦:http://it.010lm.com)
將網站編碼設為 utf-8, 這樣可以相容世界上所有字元。
(聯盟電腦:http://it.010lm.com)
如果網站已經運作了好久, 已有很多舊資料, 不能再更改簡體中文的設定, 那麼建議將頁面的編碼設為 GBK, GBK 與 GB2312 的區別就在於:GBK 能比 GB2312 顯示更多的字元, 要顯示簡體碼的繁體字, 就只能用 GBK 。
(聯盟電腦:http://it.010lm.com)
1. 編輯/etc/my.cnf , 在 [mysql] 段加入 default_character_set=utf8;
(聯盟電腦:http://it.010lm.com)
2. 在編寫 Connection URL 時,加上 useUnicode=true
(聯盟電腦:http://it.010lm.com)
3. 在 WordPress 網頁程式碼中加上一個”set names utf8″或者”set names gbk” 的指令,告訴 MySQL 連線內容都要使用 utf8 或者 gbk;(聯盟