XOOPS 是一個高度可擴充、具物件導向、且易於使用的動態網站內容管理系統(CMS),採用 PHP 語言來設計。XOOPS 十分適合用於發展小型至大型的動態社群網站、內部 Intranet 網站、入口網站、並且可用來做為 WEB LOG 使用。
本站是 XOOPS 正體中文延伸計劃網站,以推廣 XOOPS 於正體中文環境的應用為宗旨。我們希望 XOOPS 的發展能深入而嚴謹、功能越來越強大、但安全性更佳,最重要的是能永久保持其積極而開放的特色(易取易用)。
在您開始使用本站資源前 請先詳看本站的免責聲明並且請您在發出提問前事先利用搜尋功能查詢是否已有解答;提問時也請注意盡量詳述問題狀況,如無法利用語意明確表達也請提出網址以及測試帳號。竭誠的歡迎每位有經驗可以回覆提問的網友多多協助幫忙解惑,在此感謝所有對 XOOPS 有貢獻的人。
註冊新會員登入 XOOPS 完整檔 XOOPS 升級檔
到底部
討論區

搜尋

1 2 »
1mysql 從 latin1 轉 utf-8 的經驗
2007/12/23 0:31

DavidChiou

初級會員
個人資訊
註冊日期2007/12/ 9
所屬群組    註冊會員
文章   21
等級第3級
EXP:31
HP:0/57
MP:7/1568
【以下案例只適用於全 utf-8 環境。若不同環境,必須作些修改。】

許多人可能會有這樣的經驗:明明全部系統都以 UTF-8 設置,但是用 phpMyAdmin 去看資料庫時,發現中文字仍然是亂碼。

若有發生這種情況,是因為雖然 mysql 本身及網頁都是 utf-8, 但是 xoops 卻用 latin1 將數據傳給 mysql,因此最後是 utf-8 數據被以 latin1 的格式儲存進資料庫。其實在 xoops 來看沒有任何問題,只是用 phpMyAdmin 看時,就都是亂碼,較不好管理。

以下是環境:
mysql: 5.1.22
mysql 文字編碼: utf-8 unicode
mysql 連線校對: utf-8_unicode_ci
所有資料庫都以 utf-8 建立。
phpMyAdmin: 2.11.3 (Language 選 「中文 - Chinese Traditional」)
xoops 2.0.17.1

對於這種狀況,解決的幾個面向:

1. mysql 設定:
/etc/my.cnf (或 Windows 下的 my.ini) 要有以下設定:

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'

2. 在 xoops 端,先前已有各位前輩在 http://xoops.org.cn 告知大家要在
xoops/class/database/mysqldatabase.php 加入以下這行:
@mysql_query("SET NAMES 'utf8'", $this->conn);
(加此行在 $result = mysql_query($sql, $this->conn); 之前)
就可以強制用 utf8 傳輸。

3. mySQL 資料庫:
可是若有舊的 database 怎麼辦? 照上面的方法改了之後,邁入 xoops 後以前所有的中文字都變亂碼了,新輸入或重新輸入的中文字才會變正常顯示。
沒關係,照以下的步驟,就能將以前的資料庫轉碼了:

先採以下方法將資料庫 dump 出:
mysqldump --all-databases --default-character-set=latin1 -u root -p > dump.sql

修改 dump.sql 文件首頁的:
/*!40101 SET NAMES latin1 */;
成為
/*!40101 SET NAMES utf8 */;

然後再將資料庫 import 回即可:
mysql -u root -p < dump.sql

重新打開 xoops 看,中文一切 OK。進入 phpMyAdmin 看,也都沒有亂碼了。

Have a nice day!
打印此帖
回頂部 舉報
2Re: mysql 從 latin1 轉 utf-8 的經驗
2008/1/20 22:03

owl3408

新會員
個人資訊
註冊日期2006/12/18
所屬群組    註冊會員
文章   1
等級第1級
EXP:0
HP:0/0
MP:0/0
謝謝大大分享的方法,目前問題已經解決了,不過遇到這樣的問題還蠻奇怪的,不知道為什麼xoops不設定全部都用utf8就好了。
打印此帖
回頂部 舉報
3Re: mysql 從 latin1 轉 utf-8 的經驗
2008/1/21 22:42

simon

初級會員
個人資訊
註冊日期2005/07/21
所屬群組    註冊會員
文章   26
來自   台北的某一個角落
等級第3級
EXP:83
HP:0/70
MP:8/2415
超讚的文章,謝謝大大分享!

我自己把網站架在國外主機上就常常碰到這種問題!

很多外國主機預設值是 Latin1 而不是 UTF-8,這篇文章真的是太實用了!
縮圖個人網站:攲器工作室
租用主機:DreamHost
使用版本:Xoops 2.24 UTF-8

最喜歡的一句名言:
  用對方法做對事,努
打印此帖
回頂部 舉報
4Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/9 19:01

kaydream

新會員
個人資訊
註冊日期2008/01/28
所屬群組    註冊會員
文章   6
等級第1級
EXP:47
HP:0/11
MP:2/314
大大哦﹗
我在phpMyAdmin - 2.11.0
MySQL 客戶端版本: 4.1.15
用不到你的指令,自己就試下用匯出和匯入來做﹗可是即使改了做utf8,在PhpMyAdmin都是亂碼﹗真的不知如何做好﹗
請大大指教﹗
打印此帖
回頂部 舉報
5Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/13 8:17

kaydream

新會員
個人資訊
註冊日期2008/01/28
所屬群組    註冊會員
文章   6
等級第1級
EXP:47
HP:0/11
MP:2/314
3天了﹗真的沒有人懂嗎?
Woo Woo...
誰能教我﹗?
打印此帖
回頂部 舉報
6Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/14 11:19

hobmma

高級會員
個人資訊
註冊日期2006/06/27
所屬群組    註冊會員
文章   120
等級第9級
EXP:96
HP:0/224
MP:40/7050
曾經看過一篇
MySQL和phpMyAdmin工具與UTF8中文亂碼的終極研究
http://www.adsenseor.com/mysql/256.html

看看對你有沒有幫助= ="
縮圖



學習中,請多多指教
肖像造型精靈製作器
打印此帖
回頂部 舉報
7Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/14 11:49

hobmma

高級會員
個人資訊
註冊日期2006/06/27
所屬群組    註冊會員
文章   120
等級第9級
EXP:96
HP:0/224
MP:40/7050
另外這個方法是從別人部落格看到了

[phpmyadmin新增utf-8語系]


開啟phpMyAdmin裡的config.inc.php
找$cfg['PmaAbsoluteUri']把phpmyadmin網域填進去


$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/';

$cfg['DefaultLang']跟$cfg['DefaultCharset']也填utf-8
$cfg['AllowAnywhereRecoding']的值改true
$cfg['AvailableCharsets']再找看看有沒有utf-8,沒有就補上去

存檔後phpmyadmin的語系就有(zh-tw-utf-8)可以選了

如圖

至於為什麼我就不知道了,要問版大們才能解答了= ="

jpg UTF8.JPG (131.69 KB)
5263_47b3ba2c2c42a.jpg 451X1385 px
縮圖



學習中,請多多指教
肖像造型精靈製作器
打印此帖
回頂部 舉報
8Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/14 11:52

104net

資深會員
個人資訊
註冊日期2004/11/28
所屬群組    註冊會員
文章   214
來自   台北縣、桃園縣、新竹縣、台中縣
等級第13級
EXP:65
HP:0/316
MP:71/11385
參照:
kaydream 寫道:
大大哦﹗
我在phpMyAdmin - 2.11.0
MySQL 客戶端版本: 4.1.15
用不到你的指令,自己就試下用匯出和匯入來做﹗可是即使改了做utf8,在PhpMyAdmin都是亂碼﹗真的不知如何做好﹗
請大大指教﹗


改libraries/select_lang.lib.php內mysql_charset_map對應編碼即可~
我覺得應該很多人懂吧~只是他們沒有發言而已~
所以你下次要問都沒人要回答嗎?
而不是問都沒人懂嗎?
我的XOOPS作品--------
   SEO也有用陷害的

目前已開發完成的模組有:  交友模組、商品展示模組
拍賣模組、旅館訂房模組FLASH 相本模...
打印此帖
回頂部 舉報
9Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/14 11:58

hobmma

高級會員
個人資訊
註冊日期2006/06/27
所屬群組    註冊會員
文章   120
等級第9級
EXP:96
HP:0/224
MP:40/7050
參照:
104net 寫道:
參照:
kaydream 寫道:
大大哦﹗
我在phpMyAdmin - 2.11.0
MySQL 客戶端版本: 4.1.15
用不到你的指令,自己就試下用匯出和匯入來做﹗可是即使改了做utf8,在PhpMyAdmin都是亂碼﹗真的不知如何做好﹗
請大大指教﹗


改libraries/select_lang.lib.php內mysql_charset_map對應編碼即可~
我覺得應該很多人懂吧~只是他們沒有發言而已~
所以你下次要問都沒人要回答嗎?
而不是問都沒人懂嗎?


大大,mysql_charset_map在哪個資料夾
可不可以點明一下下呢,我只有找到mysql_charsets.lib.php
縮圖



學習中,請多多指教
肖像造型精靈製作器
打印此帖
回頂部 舉報
10Re: mysql 從 latin1 轉 utf-8 的經驗
2008/2/15 10:43

kaydream

新會員
個人資訊
註冊日期2008/01/28
所屬群組    註冊會員
文章   6
等級第1級
EXP:47
HP:0/11
MP:2/314
hobmma
謝謝你熱心的回答哦﹗我返去試試﹗

104Net
若真是這樣﹗你所說的人全都是沒良心的哦﹗呵呵﹗
打印此帖
回頂部 舉報
觀看
發新主題
回覆
編輯
刪除
發新投票
投票
上傳
不經審核
1 2 »

*背景色的亮與暗為提示當前的使用權限。亮色為可以;暗色為不可以。

*編輯、刪除此兩項有時效限制,當有權限而帖子右下方看不見此兩項按鈕時,表示時效已過。

回頂部 前一個主題 下一個主題
網站佈景

(共 2 個樣板佈景)

誰在線上
更多…

會員: 0 | 訪客: 10

10人在線上
(9人在瀏覽討論區)

登入X

帳號:

密碼:

記住我

忘記密碼嗎?請在下方填寫註冊時的電郵地址,以便取得新密碼。