史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   論壇程式討論區 (http://forum.slime.com.tw/f79.html)
-   -   MYSQL編碼? (http://forum.slime.com.tw/thread196333.html)

ppp0600 2007-01-23 02:41 PM

MYSQL編碼?
 
我記得之前安裝的時候是用BIG5碼作為基礎,
但是後來的程式都是UTF8,
造成後來的程式顯示都是亂碼,
我想請問可以將資料庫改成UTF8嗎?
那原本BIG5的資料會變亂碼嗎?
是否有其他方法可修改?
我是有查到一篇用手動改法,
只是我不清楚怕毀了資料......
(我已經毀掉過兩次了 :56gtyhu: )

飛鳥 2007-01-23 03:23 PM

你的程式是用?

我試過php,如果要用utf-8的話要加入三行程式

ppp0600 2007-01-23 07:01 PM

引用:

作者: 飛鳥
你的程式是用?

我試過php,如果要用utf-8的話要加入三行程式

我是用phpbb2

飛鳥 2007-01-24 09:34 AM

在資料庫內的資料表要存成utf8_bin

還有在做網頁時,你的存檔文件也要是utf-8,像

http://netgames123.googlepages.com/utf_8FP.JPG
這樣FrontPage會自動存成utf-8的格式

如果是記事本,也要手動改變成utf-8的編碼

http://netgames123.googlepages.com/utf_8F01.JPG

http://netgames123.googlepages.com/utf_8F02.JPG


在程式內,要讀取mysql裡的utf8編碼文字,加上這三行會比較好
PHP 語法:

mysql_query("SET NAMES 'utf8'");//要從資料庫顯示utf-8資料要加三行--第一行
mysql_query("SET CHARACTER_SET_CLIENT=utf8");//第二行
mysql_query("SET CHARACTER_SET_RESULTS=utf8");//第三行 


Chin-Wei 2007-01-24 09:51 AM

引用:

作者: ppp0600
我記得之前安裝的時候是用BIG5碼作為基礎,
但是後來的程式都是UTF8,
造成後來的程式顯示都是亂碼,
我想請問可以將資料庫改成UTF8嗎?
那原本BIG5的資料會變亂碼嗎?
是否有其他方法可修改?
我是有查到一篇用手動改法,
只是我不清楚怕毀了資料......
(我已經毀掉過兩次了 :56gtyhu: )


1. 可以改成 UTF-8
2. 有些字的前面會自動被加上 \,所以你要自己手動去改那些字,eg.許、功、蓋等
3. phpbb2 本身要改編碼
4. MySQL 本身也要改編碼
5. 以上有個環節出錯,你的資料庫就毀了,請先做好備份


==
接下來開始教你實戰過程XD

1. 請先把資料庫使用 mysqldump,以 latin1 格式備份出來(資料庫預設都是使用 latin1)
mysqldump --all-databases --default-character-set=latin1 -u root -p > mysql.sql

注意,這一步沒做,你轉換一定失敗。


2.把資料表的編碼修正為 UTF8
找出下列幾行,並將所有的 latin1 改為 utf8
s/SET NAMES utf8
s/ENGINE=MyISAM DEFAULT CHARSET=utf8
s/ENGINE=InnoDB DEFAULT CHARSET=utf8
s/ENGINE=MEMORY DEFAULT CHARSET=utf8


3.實際進行轉換(big5 -> utf8)
iconv -c -f big5 -t utf8 mysql.sql > mysql_utf8.sql


4.修改 MySQL 啟動參數

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'


5. 執行 show variables like 'character\_set\_%';觀察結果是否為下表所列。

+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+



6. mysql -u root < mysql_utf8.sql


恭喜你,資料庫轉換完畢 ^^a





==
還有不懂的地方可以參考這本,寫得很棒,目前啃過的MySQL書就這本最優
http://ec2.images-amazon.com/images/P/0672326736.01._BO2,204,203,200_PIlitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_SCLZZZZZZZ_V38088228_.jpg





什麼都要懂、什麼都要會
您好,我是萬能小叮噹XD

ppp0600 2007-01-24 11:59 AM

引用:

作者: 飛鳥
在程式內,要讀取mysql裡的utf8編碼文字,加上這三行會比較好
PHP 語法:

mysql_query("SET NAMES 'utf8'");//要從資料庫顯示utf-8資料要加三行--第一行
mysql_query("SET CHARACTER_SET_CLIENT=utf8");//第二行
mysql_query("SET CHARACTER_SET_RESULTS=utf8");//第三行 


請問這段程式有限定要加在哪裡嗎?

引用:

作者: Chin-Wei
1. 可以改成 UTF-8
2. 有些字的前面會自動被加上 \,所以你要自己手動去改那些字,eg.許、功、蓋等
3. phpbb2 本身要改編碼
4. MySQL 本身也要改編碼
5. 以上有個環節出錯,你的資料庫就毀了,請先做好備份


==
接下來開始教你實戰過程XD

1. 請先把資料庫使用 mysqldump,以 latin1 格式備份出來(資料庫預設都是使用 latin1)
mysqldump --all-databases --default-character-set=latin1 -u root -p > mysql.sql

注意,這一步沒做,你轉換一定失敗。


2.把資料表的編碼修正為 UTF8
找出下列幾行,並將所有的 latin1 改為 utf8
s/SET NAMES utf8
s/ENGINE=MyISAM DEFAULT CHARSET=utf8
s/ENGINE=InnoDB DEFAULT CHARSET=utf8
s/ENGINE=MEMORY DEFAULT CHARSET=utf8


3.實際進行轉換(big5 -> utf8)
iconv -c -f big5 -t utf8 mysql.sql > mysql_utf8.sql


4.修改 M...

這感覺有點難啃,我會試試看,對了,我知道我很耍寶,
因為忘了說我系統是WIN2K的,使用APPSERV 2.4.5
上面這些指令看起來像linux....
這樣我會不會被痛扁阿 :toomuch:

Chin-Wei 2007-01-24 02:24 PM

引用:

作者: ppp0600
請問這段程式有限定要加在哪裡嗎?

那三行可以不用加,直接加在 Server 端就行了
但是 phpbb2 本身的編碼設定記得要改



引用:

作者: ppp0600
這感覺有點難啃,我會試試看,對了,我知道我很耍寶,
因為忘了說我系統是WIN2K的,使用APPSERV 2.4.5
上面這些指令看起來像linux....
這樣我會不會被痛扁阿 :toomuch:

是 linux 沒錯,但應該可以通用,因為 MySQL Client 程式 linux 和 windows 用法應該差不多啦......

引用:

3.實際進行轉換(big5 -> utf8)
iconv -c -f big5 -t utf8 mysql.sql > mysql_utf8.sql

這一步可以改用 emeditor 把檔案格式改存為 UTF8


引用:

6. mysql -u root < mysql_utf8.sql

這一步要研究一下,看看 Windows 的指令怎麼下XD




==
最後,真的不行的話,直接把 DB 丟過來,我幫你轉比較快
前一陣子才剛把 latin1 資料庫整個升級成 UTF8,目前戰意高昂中XD

ppp0600 2007-01-24 06:35 PM

引用:

作者: Chin-Wei
這一步要研究一下,看看 Windows 的指令怎麼下XD
==
最後,真的不行的話,直接把 DB 丟過來,我幫你轉比較快
前一陣子才剛把 latin1 資料庫整個升級成 UTF8,目前戰意高昂中XD

請幫我確定一下,6. mysql -u root < mysql_utf8.sql
若不行就只好請您幫忙了

請問一下,用PHPBB的內建備份就可以,還是要整個SQL的FOLDER拷貝出來?

Chin-Wei 2007-01-24 07:30 PM

引用:

作者: ppp0600
請幫我確定一下,6. mysql -u root < mysql_utf8.sql
若不行就只好請您幫忙了

請問一下,用PHPBB的內建備份就可以,還是要整個SQL的FOLDER拷貝出來?


我試過了,語法完全一樣 ^^a

1.備份請不要使用 phpbb,請使用 MySQL 提供的備份工具:mysqldump

2.請勿使用 binary copy(就是直接複製),MySQL 的 Storage Engine 不一定可以 portable,請使用

引用:

mysqldump --default-character-set=latin1 -u root -p 資料庫名稱 > latin1_db.sql

把你的資料庫備份成 latin1_db.sql 檔案,然後把檔案丟給我就行了XD

ppp0600 2007-01-25 02:02 PM

這幾天比較空時我研究一下再向您請教,感謝喔


所有時間均為台北時間。現在的時間是 03:35 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1