:::

Unicode PHP與MySQL的設定

3月 31, 2006 0 Comments Edit Copy Download

[起因]

 一般我們使用PHP+MySQL+PHPMyAdmin建置網站之後,會發現PHPMyAdmin中的中文會變成亂碼,但在網頁上卻又可以正常顯示。
  這是因為MySQL從第四版之後全部使用Unicode,所以才多了個設置連線校對的設定。而預訂的校對是latin1,所以中文存進去會變成亂碼。但是取出的時候,卻又因為是錯誤的校對,所以又能回復成中文。
不過,這樣子就不能透過PHPMyAdmin直接管理資料庫的內容,而且在資料庫轉移、升級的情況下也會有所困擾。

這裡的設定目標是,建構一個以Unicode寫成的PHP資料庫,而必須讓PHPMyAdmin能夠正確顯示中文。其他關於資料庫中這種情況的轉換方式、Big-5的設定方式,這邊就沒有涉略了。

[設定方式]

1. 用PHPMyAdmin或用PHP建構資料庫、資料表的時候,要設定其連線校對為utf8_gemeral_ci,以下列舉SQL語法

#建構資料庫
CREATE DATABASE `db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

#建構資料表
CREATE TABLE `tb` (
`field` VARCHAR( 18 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) TYPE = innodb CHARACTER SET utf8 COLLATE utf8_general_ci;

2. 在PHP中查詢(select)資料之前,要先更改預設查詢的編碼,增加下列指令:

mysql_query("SET NAMES utf8");

以上,完成