網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 主機與頻寬 > 虛擬主機
論壇幫助 社區 日曆事件 今日新文章 搜尋

回覆
 
主題工具
  #1  
舊 2007-06-15, 07:30 AM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 23,056
預設 MySQL編碼由 latin1 轉 utf8

從網路上看來的。http://a-wei.net/archives/4

引用:
MySQL latin1 轉 utf8 Posted March 31, 2006

相信 MySQL 的編碼對很多人來說 … 一直是個相當令人頭痛的問題 … 今天所要做的介紹是如何把資料庫的資料, 由 latin1 轉成 utf8..

一般 .. MySQL 裝起來後(用 rpm 安裝) ,系統的預設編碼是 latin1.

而很多人在安裝一些網頁的系統時,如 wordpress、LifeType、phpBB … 等等,都會選擇 utf8 。

這時 … 系統一樣可以正常運作 … 只是當用 phpmyadmin 進入管理資料庫時,就會發現 .. 怎麼中文字的部分都變成了歪七扭八 ..

或者一些鬼畫符的文字。如:凡事先從工作講起

此現象就是 utf8 的文字以 latin1形式儲存,phpmyadmin 以 utf8 的資料讀取方式讀取 … 讀出來的資料就是這種鬼畫符…><。

若要解決 phpmyadmin 讀出的鬼畫符 … 有兩個方法:

1. 進入 phpmyadmin 內一個名為 libraries 的子目錄 .. 編輯 select_lang.lib.php. 找到 $mysql_charset_map 這一段下方 ..

‘utf-8′ => ‘utf8′,
把它改成

‘utf-8′ => ‘latin1′,

然後存檔 … 這時候就可以發現原先的鬼畫符 … 這時候又都正常了.

2. 把資料庫的編碼轉成 utf8 …

步驟:

a. 把資料庫 dump 出來

mysqldump -u xxx -p database > database.sql –default-character-set=latin1

這時候 dump 出來的 database.sql 是 latin1 的檔案格式,然而是 utf8 的文字資料,因此這時若用 vi 開檔看它 …

還是會發現中文字是鬼畫符 … 這時不要被眼前的假象所騙 … 以為自己做錯 .. 幾接著做下一步驟。

b. 把 dump 出來的 database.sql 下載回去 .. 用 emEditor(網路上可免費下載,是個支援 utf-8 的編輯器)把 database.sql 打開,

它可以正常識別 utf8 的文字 ..用取代的功能,把 latin1 都取代成 utf8 ,之後直接另存新檔 .. 這時把檔案類型設定儲存成 UTF-8。

c. 再把 database-utf8.sql 上傳到 server .. 這時我們用 vi 開啟它 .. 就可以看見是正常的中文字 .. 這就表示檔案沒問題囉。

d. 把檔案匯入資料庫

mysql database < database-utf8.sql -u xxx -p --default-character-set=utf8
如果資料量不是很大 … 那麼很快就可以完成這個步驟 .. 這時候若沒有錯誤訊息出現 .. 那麼恭喜你 ..

你已經完成了資料庫轉換的工作了。如果有錯誤訊息出現 .. 主要有兩個情形 ..

1. 文件檔內的中文字,用 vi 看是亂碼 ..文件檔的格式不是 utf-8。

2. 匯入的時候漏掉指定採用 utf8 的資料編碼匯入。

以上的作業是在 資料庫系統都是處於 latin1 的環境底下,也就是沒有在 my.cnf 指定 default-character-set=utf8。
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2007-06-15, 10:16 AM
seesawgame 的頭像
seesawgame seesawgame 目前離線
進階會員
 
註冊日期: 2004-07-25
住址: 域名家.com
文章: 6,551
預設

我個人推薦 twvbb.com 上的這一篇文章轉碼
http://www.twvbb.com/vbb/thread/53/413/
__________________
回覆時引用此篇文章
  #3  
舊 2007-06-15, 10:38 AM
winwin520 winwin520 目前離線
進階會員
 
註冊日期: 2006-06-13
文章: 618
發送 MSN 消息給 winwin520
預設

請教,我租用Godaddy的空間,我根本就不能更改他的select_lang.lib.php。

如何解決呢?
回覆時引用此篇文章
  #4  
舊 2007-06-15, 01:01 PM
coolhd 的頭像
coolhd coolhd 目前離線
初級會員
 
註冊日期: 2005-05-16
住址: 台中
文章: 22
預設

基本上上面所提的phpmyadmin改編碼的方式是投機的改法,不算永久的解決問題.它只是把"被編碼成latin1"的UTF-8資料,在phpmyadmin中以latin1的方式來"顯示".最終的解決之道還是要採用正確的編碼,才能徹底解決.除非在你的網站上往後所有採用UTF-8的網頁程式都要"被存成latin1".不然不建議這麼做.

應該要先從mysqldump那個步驟開始做,導回正確的編碼才對.
這跟小弟在回答PunBB用戶採用UTF-8資料庫的問題一樣.
如何將一個 MySQL Datebase 轉移到另一個Server上
回覆時引用此篇文章
回覆


發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 01:50 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.