MySQL增加了編碼的支持所以在轉換舊數據的時候稍微麻煩一些但只要注意以下幾點基本沒問題的
轉換之前一定要先把原有數據dump出來一般原有數據都是gb編碼吧dump命令如下
MySQLdump u p database –adddroptable –extendedinsert
–adddroptable是為了導入的時候省去建表環節–extendedinsert是為了防止在導入的時候一個sql語句過大的情況想想你的上千條記錄寫在一條sql語句中是多麼的恐怖
這裡假定原有數據庫是gb編碼需要轉換為utf編碼其它編碼之間的轉換類似
修改dump出來的sql文件用Emeditor或iconv把文件的編碼轉換為utf注意最好不要那個什麼Unicode Signature(BOM)因為MySQLexe不認的再把文件中的gbk_bin替換為utf_general_ci把gbk替換為 utf然後在文件最前面加上
set names utf;
帶上BOMMySQL不識別的錯誤大體如下
ERROR () at line :
You have an error in your SQL syntax;
check the manual that corresponds to your
MySQL server version for the right syntax to use near ???
/*! SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ at line
重新建MySQL庫然後導入備份的sql語句導入命令如下
mysql u p database < dumpdatasql
如果是以前導出的文件導入的時候遇到錯誤
Got a packet bigger than max_allowed_packet bytes or
ERROR (S) at line : Got a packet bigger than
max_allowed_packet by tes
就需要修改MySQL的最大允許包大小了編輯myini在[MySQLd]部分(不在這部分沒用)添加一句
setvariable=max_allowed_packet=
重啟MySQL服務就可以了我這裡設置的是大約MB
到這裡數據導入基本就完成了接下來就是根據各個應用的不同來調整了一般有的系統已經支持了但還有的不支持不過調整方法大概分以下幾類
在數據庫連接後面加上
mysql_connect(…
mysql_query(set names utf′);
這種情況最多比如Brim什麼的
將語言文件或模板文件的編碼設置為utf注意是直接把文件編碼轉換了就可以內容不用管這樣的有phpwind mantis使用工具可以是iconv
修改模板文件設置HTML中的
<meta httpequiv=ContentType content=text/html;charset=UTF />
原先是gb編碼的系統多半需要改這個
From:http://tw.wingwit.com/Article/program/MySQL/201311/29404.html