租屋就找
明日黃金屋
廣利不動產居家清潔請找
易祺清潔公司
J2H流行雜誌J2h論壇程式設計討論   
交友配對個人設定加入會員會員說明重新登入


MySQL升級5.0與UTF-8之相關解決方法

房東:優妹
發表時間:2007-02-14
[檢舉]


從MySQL4.0升級至5.0。

首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上–default-character-set=latin1

如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可

#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql

#piconv -f big5 -t utf8 output.sql >utf8.sql

如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8

#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql

#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql

接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci

但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟 default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。

接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

我是用phpMyAdmin建立資料庫的,建立時”校對”要選utf8_general_ci

再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。
1.剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個”\“,記得用文字編輯器把他消掉2.import進去時記得還要先修改一下dump出來的sql檔,在最前面加上

SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

再來把每個資料表後面的

TYPE=MyISAM;

改成

ENGINE=MyISAM DEFAULT CHARSET=utf8;

都改好後就可以把他import進去了

#mysql -u帳號 -p 資料庫 < utf8.sql

不過以上實在有點麻煩,所以我把多餘的”/“消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可

順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行

mysql_query(”SET NAMES ‘utf8‘”);
mysql_query(”SET CHARACTER_SET_CLIENT=utf8“);
mysql_query(”SET CHARACTER_SET_RESULTS=utf8“);

檢查語系的SQL語法

show variables like “%character%”;




  • J2H贊助網站            在此刊登廣告

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!

  • 1 樓住戶:優妹
    發表時間:2007-02-14
    [檢舉]

    1.<meta http-equiv="Content-Type" content="text/html; charset=big5">

    2.用 vi /etc/php.ini 設定php中的語系為 default_charset = "big5"

    3. 用 vi /etc/my.cnf 設定MySQL中的語系為
    [mysqld]
    init_connect='SET NAMES big5'
    default-character-set=big5
    [client]
    default-character-set = big5

    2 樓住戶:小乖
    發表時間:2007-02-14
    [檢舉]

    MySQL 使用 rpm 安裝後,修改 charset 設定的方法!
    先來談談沒有加 charset (預設字集) 會怎樣,主要是遇到中文字會有問題。

    1.使用 SQL 的 like 指令時,使用英文字母做搜尋,只要某個中文單字內碼跟搜尋的英文字母一樣,也會被 select 出來。(如「建」這個字,用英文字「x 」一樣找的到)

    2.就是常見的「許、功、蓋」等,內碼含 "\" 字元的中文字,全部都會造成寫入或讀取資料庫失敗。

    這時我們就必須指定 charset (預設字集)是 big5 了。但不是用 tarball 安裝 mysql 的話,自然不可能下 --with-charset=big5 了,所以必須做個小手術來讓 MySQL 知道我們的資料庫主要用的字集是 big5 。

    先到 /usr/share/mysql/ 依照你的記憶體需求來選一個 cnf 檔。(需要的記憶體配置在各檔檔頭都有)

    如果沒有特別需求,就直接用 my-medium.cnf 就可以了。然後放到 /etc 並改名為 my.cnf,指令如下:

    #cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

    再來就是修改 my.cnf

    #vi /etc/my.cnf

    找到以下內容
    [mysqld]
    port=3306
    socket=/usr/lib/mysql/mysql.sock
    default-character-set=big5 //自行加入這一即可,也就是設定預設字集為 big5

    存檔後只要重新啟動 MySQL 就可以了:
    #service mysql restart

    這樣就完成更改的動作了,而且資料庫中若有 UTF-8 字集的資料存取也都不會受影響,很方便吧! ^_^




     共 2 人回應  選擇頁數 【第1 頁】 

    姓名:     加入註冊會員
    佈告內容:
    連結網址: 連結檔案: 貼影片說明
    其他選項: 使用HTML語法





    J2H流行雜誌 客源網 比價網 拍賣網 收藏網 工商名錄
    清潔公司 清潔 台北租屋 台中租屋 高雄租屋 台灣租屋
    租屋網 房地產 租屋 廣利不動產 房屋仲介 人力銀行
    商場雜誌 室內裝潢 搬家公司 水電維修 土木工程 服務行業
    公司行號 餐飲服務 服飾精品 搬家公司聯盟網 行銷光碟 清潔公司
    行政總務 行銷廣告 系統軟體 其他工程 服務行業 金融專業
    客服支援 教育學術 業務貿易 經營人事 J2H網路電台 網路交友

    Copyright(C)2000 J2H.TW All Rights Reserved
    著作權所有 J2H流行雜誌