ACSite.NET 線上服務論壇

疑問與討論 => PHP/mySQL 與 CGI 討論 => 主題作者是: raie 於 八月 01, 2007, 04:02:55 pm



主題: 資料庫變亂碼
作者: raie八月 01, 2007, 04:02:55 pm
HI, 能不能幫看一下 why 資料庫都變亂碼
已經第二天了, 謝謝

http://blog.raienet.com (http://blog.raienet.com)


主題: 資料庫變亂碼
作者: acsite八月 01, 2007, 06:39:39 pm
經檢查後發現是DNS的問題
已經幫您修正了
非常抱歉造成了您的困擾
謝謝


主題: 資料庫變亂碼
作者: debra15八月 08, 2007, 06:57:17 am
我今天由phpmyadmin看資料都變成亂碼了
可以幫幫忙嗎?


主題: 資料庫變亂碼
作者: acsite八月 08, 2007, 09:39:04 am
引用
我今天由phpmyadmin看資料都變成亂碼了
可以幫幫忙嗎?
您好:

剛剛已經在您的網站目錄下安裝舊版本的 phpmyadmin
您可以直接連線這個舊版phpmyadmin就不會有亂碼了


主題: 資料庫變亂碼
作者: debra15八月 08, 2007, 03:05:24 pm
引用
剛剛已經在您的網站目錄下安裝舊版本的 phpmyadmin
您可以直接連線這個舊版phpmyadmin就不會有亂碼了
請問是由Control Panel那裡連嗎?
看到的還是一樣ㄟ


主題: 資料庫變亂碼
作者: acsite八月 08, 2007, 08:34:11 pm
引用
引用
剛剛已經在您的網站目錄下安裝舊版本的 phpmyadmin
您可以直接連線這個舊版phpmyadmin就不會有亂碼了
請問是由Control Panel那裡連嗎?
看到的還是一樣ㄟ
您好:

請連線 http://您的網域/pma/ 就可以了 :)  


主題: 資料庫變亂碼
作者: debra15八月 08, 2007, 11:14:49 pm
引用
請連線 http://您的網域/pma/ 就可以了 :)
顯示The page cannot be found
我在File Manager那邊有看到pma這個檔案夾了
可是仍然連不到耶~


主題: 資料庫變亂碼
作者: acsite八月 09, 2007, 05:25:47 pm
引用
引用
請連線 http://您的網域/pma/ 就可以了 :)
顯示The page cannot be found
我在File Manager那邊有看到pma這個檔案夾了
可是仍然連不到耶~
您好:

請使用 http://pma.cp15.secserverpros.com/ (http://pma.cp15.secserverpros.com/) 登入
即可使用舊版的 phpMyAdmin  :)  


主題: 資料庫變亂碼
作者: debra15八月 09, 2007, 11:52:47 pm
引用

請使用 http://pma.cp15.secserverpros.com/ (http://pma.cp15.secserverpros.com/) 登入
即可使用舊版的 phpMyAdmin  :)
點了之後一片空白ㄟ


主題: 資料庫變亂碼
作者: 八月 10, 2007, 01:59:30 am
引用
引用

請使用 http://pma.cp15.secserverpros.com/ (http://pma.cp15.secserverpros.com/) 登入
即可使用舊版的 phpMyAdmin  :)
點了之後一片空白ㄟ
(http://img262.imageshack.us/img262/1645/pmajx5.png)


主題: 回覆: 資料庫變亂碼
作者: debra15八月 11, 2007, 12:28:29 am
請問如果我點那個連結依然一直是空白頁
可能是什麼問題呢?


主題: 回覆: 資料庫變亂碼
作者: 八月 11, 2007, 01:07:52 am
請使用其他瀏覽器試看看,大部份都是此問題。


主題: 回覆: 資料庫變亂碼
作者: debra15八月 11, 2007, 01:35:10 am
我用firefox開顯示找不到伺服器
換台電腦用ie也是The page cannot be displayed


主題: 回覆: 資料庫變亂碼
作者: 八月 11, 2007, 02:58:52 am
問問Acsite你的IP是不是被鎖了。
或使用IP連看看。


主題: 回覆: 資料庫變亂碼
作者: debra15八月 11, 2007, 02:58:34 pm
問問Acsite你的IP是不是被鎖了。
或使用IP連看看。

謝謝你耐心回答
現在已經看得到了 :D


主題: 回覆: 資料庫變亂碼
作者: acsite八月 11, 2007, 03:18:58 pm
非常感謝 jrchou 的熱心回答 :)


主題: Re: 資料庫變亂碼
作者: debra15八月 15, 2007, 11:34:25 am
http://pma.cp15.secserverpros.com/
又連不上這次是顯示找不到伺服器
請幫忙  這次很急><


主題: Re: 資料庫變亂碼
作者: acsite八月 15, 2007, 04:12:09 pm
http://pma.cp15.secserverpros.com/
又連不上這次是顯示找不到伺服器
請幫忙  這次很急><

如果上面網址連不上的話
請試試看 http://pma.cp15.acsite.net


主題: Re: 資料庫變亂碼
作者: debra15八月 18, 2007, 04:22:41 pm
如果上面網址連不上的話
請試試看 http://pma.cp15.acsite.net

已經連的上了  但是有些還是亂碼
可以讓我用之前的版本嗎?可以選big5或utf-8的


主題: Re: 資料庫變亂碼
作者: acsite八月 18, 2007, 05:17:30 pm
如果上面網址連不上的話
請試試看 http://pma.cp15.acsite.net

已經連的上了  但是有些還是亂碼
可以讓我用之前的版本嗎?可以選big5或utf-8的

請問是什麼地方有亂碼呢?
如果您需要UTF8版本的phpmyadmin
可以使用CPANEL控制台內建的就可以了 :)


主題: Re: 資料庫變亂碼
作者: debra15八月 22, 2007, 11:50:58 am
如果上面網址連不上的話
請試試看 http://pma.cp15.acsite.net

已經連的上了  但是有些還是亂碼
可以讓我用之前的版本嗎?可以選big5或utf-8的

請問是什麼地方有亂碼呢?
如果您需要UTF8版本的phpmyadmin
可以使用CPANEL控制台內建的就可以了 :)

新的版本有連線校對  Language那邊沒有utf-8可以選
我的wordpress不管怎麼選都還是亂碼


主題: Re: 資料庫變亂碼
作者: acsite八月 22, 2007, 02:09:19 pm
新的版本有連線校對  Language那邊沒有utf-8可以選
我的wordpress不管怎麼選都還是亂碼
能否請您提供 cPanel 帳號的密碼
或是請允許我們重設您的密碼
以便實際登入測試您的問題
謝謝


主題: Re: 資料庫變亂碼
作者: mhchoy八月 25, 2007, 10:39:16 pm
我的資料庫都有亂碼問題。

如果不能收復,請替我重灌資料庫內容,可以嗎?


主題: Re: 資料庫變亂碼
作者: acsite八月 26, 2007, 11:21:58 am
我的資料庫都有亂碼問題。

如果不能收復,請替我重灌資料庫內容,可以嗎?

您好:

能否使用PM提供出現亂碼的程式網址
以便為您進行修正


主題: Re: 資料庫變亂碼
作者: some九月 04, 2007, 04:11:50 am
去下載 phpmyadmin 2.5.6 舊版就可以看到之前的編碼了

新版的 phpmyadmin 會用原本的連線校對欄位,  結果網頁是用uft8去開, 所以不管你是存UTF8或者是原本的編碼都會看成亂碼

實際上對資料是不會影響的啦.



主題: Re: 資料庫變亂碼
作者: debra15九月 05, 2007, 02:44:26 am
去下載 phpmyadmin 2.5.6 舊版就可以看到之前的編碼了
新版的 phpmyadmin 會用原本的連線校對欄位,  結果網頁是用uft8去開, 所以不管你是存UTF8或者是原本的編碼都會看成亂碼
實際上對資料是不會影響的啦.
2.5的可以看到BIG5但沒辦法選uft8
我希望他們幫我裝2.6-2.8的版本
但是一直沒下文
如果我要自己裝  不知道該如何著手  可以教一下嗎?


主題: Re: 資料庫變亂碼
作者: acsite九月 05, 2007, 09:14:48 am
2.5的可以看到BIG5但沒辦法選uft8
我希望他們幫我裝2.6-2.8的版本
但是一直沒下文
如果我要自己裝  不知道該如何著手  可以教一下嗎?

您好:

之前我們有回覆您
在cPanel裡面的phpmyadmin就是最新的2.10.x
所以如果您需要使用新版本的phpmyadmin
可以直接使用 cPanel 裡面的就可以了 :)


主題: Re: 資料庫變亂碼
作者: debra15九月 05, 2007, 02:05:41 pm
2.5的可以看到BIG5但沒辦法選uft8
我希望他們幫我裝2.6-2.8的版本
但是一直沒下文
如果我要自己裝  不知道該如何著手  可以教一下嗎?

您好:

之前我們有回覆您
在cPanel裡面的phpmyadmin就是最新的2.10.x
所以如果您需要使用新版本的phpmyadmin
可以直接使用 cPanel 裡面的就可以了 :)

我也有回覆  新的版本有連線校對  Language那邊沒有utf-8可以選
我的wordpress不管怎麼選都還是亂碼
我沒辦法用
我需要的是原來的


主題: Re: 資料庫變亂碼
作者: acsite九月 08, 2007, 08:38:50 pm
您好:

已經幫您安裝 2.8 版本 :)
請使用 http://pma.cp15.acsite.net/2.8/ 連線


主題: Re: 資料庫變亂碼
作者: debra15九月 09, 2007, 02:42:44 pm
您好:

已經幫您安裝 2.8 版本 :)
請使用 http://pma.cp15.acsite.net/2.8/ 連線
不好意思
因為我另一個網站裝的是phpMyAdmin - 2.8.0.2版  繁體中文是可以選utf-8及big5的
所以我以為2.8 可以這樣選
剛剛連線發現你們幫我新安裝的phpMyAdmin - 2.8.2.4還是不能選utf-8及big5
真不好意思
能不能麻煩你們幫我裝那可以選的呢?
謝謝


主題: Re: 資料庫變亂碼
作者: acsite九月 10, 2007, 11:41:16 am
因為我們安裝的 2.8.2.4 在登入畫面可以選擇
Chinese traditional (big5) 與 Chinese traditional (utf-8)
所以很抱歉我們無法明確地瞭解您提及「2.8.0.2版  繁體中文是可以選utf-8及big5」的意思
如果方便的話
能否請您提供另一個網站的帳號密碼?
讓我們直接使用該網站的 phpMyAdmin 看看有什麼不同
謝謝 :)


主題: Re: 資料庫變亂碼
作者: some九月 11, 2007, 03:17:36 am
我寫了一篇教學.

您可以看看, 看對您有沒有幫助.


http://www.adsenseor.com/mysql/256.html


主題: Re: 資料庫變亂碼
作者: acsite九月 12, 2007, 12:02:56 am
非常感謝 some 的教學文件
寫得非常詳細清楚 :)
目前不太確定 debra15 的狀況是什麼
所以希望 debra15 提供更詳細的資訊
謝謝 :)


主題: Re: 資料庫變亂碼
作者: debra15九月 13, 2007, 01:04:26 pm
非常感謝 some 的教學文件
寫得非常詳細清楚 :)
目前不太確定 debra15 的狀況是什麼
所以希望 debra15 提供更詳細的資訊
謝謝 :)
我一開始沒發現登錄的地方可以選
後來選了之後還是顯示亂碼
(有看到有連線校對  是不是這個部分的差別呢?)

看了some的那篇教學
我的狀況算不算是狀況(1) phpMyAdmin未升級前正常,升級後中文變亂碼
那是不是裝舊版就可以解決呢?

另外一個網站是客戶的  所以可能不方便給登錄的資料  抱歉


主題: Re: 資料庫變亂碼
作者: acsite九月 14, 2007, 05:12:07 pm
如果是 狀況(1) phpMyAdmin未升級前正常,升級後中文變亂碼
請使用以下任一網址即可登入舊版的phpmyadmin :)

http://pma.cp15.secserverpros.com/


主題: Re: 資料庫變亂碼
作者: debra15九月 15, 2007, 05:02:12 am
如果是 狀況(1) phpMyAdmin未升級前正常,升級後中文變亂碼
請使用以下任一網址即可登入舊版的phpmyadmin :)

http://pma.cp15.secserverpros.com/
http://pma.cp15.acsite.net
又繞回來了
2.5.7版我找不到可以選utf-8的地方
可以教教我嗎?


主題: Re: 資料庫變亂碼
作者: acsite九月 20, 2007, 09:46:52 pm
又繞回來了
2.5.7版我找不到可以選utf-8的地方
可以教教我嗎?

我們安裝了 utf8 的 2.5.7版
請使用 http://pma.cp15.secserverpros.com/utf8/ 登入
謝謝 :)


主題: Re: 資料庫變亂碼
作者: debra15九月 22, 2007, 11:23:24 am
我們安裝了 utf8 的 2.5.7版
請使用 http://pma.cp15.secserverpros.com/utf8/ 登入
謝謝 :)

謝謝


主題: Re: 資料庫變亂碼
作者: 九月 26, 2007, 05:47:06 pm
路過~~

網路上看到的文章
http://www.discuz.net/viewthread.php?tid=444081&extra=&page=1

引用
MySQL從4.1版本開始才提出字符集的概念,所以對於MySQL4.0及其以下的版本,他們的字符集都是Latin1的,所以有時候需要對mysql的字符集進行一下轉換,MySQL版本的升級、降級,特別是升級MySQL的版本,為了不讓程序繼續沿用Latin1字符集之後對以後Discuz!版本升級的影響和安裝SupeSite,這就需要我們進行字符集的轉換!
   
本人轉換過好多數據了,也用過了好多的辦法,個人感覺最好用的就是使用MySQL命令導出導入中將字符集轉換過去!
   
現在我將用圖文並茂的方式向大家展示一下如何將MySQL字符集進行轉換,由於字符集比較多,現在主要舉GBK和Latin1這兩種字符集之間的轉換!
   
首先我將講解一下如何將MySQL從GBK轉換為Latin1的(如果是UTF8或者BIG5轉換即將GBK換成相應的字符集即可)!這種問題常發生在MySQL從MySQL4.1及其以上版本轉換為MySQL4.1以下的版本的過程中!有的人圖個方便,特別是有主機權限的,直接將MySQL的data目錄下的文件拷貝過去了,這樣造成的問題就是亂碼問題!當然我所說的這些都要求你必須擁有主機權限,虛擬主機用戶可以在本地搭建好論壇,下載數據到你的本地,然後把數據導入到你本地的數據庫,然後進行字符集的轉換!
   
現在的步驟就是將MySQL的數據導出了,在mysql的命令提示符下(linux系統為mysql的命令目錄下),輸入下面導出的命令:

mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql
如圖1(windows下)和圖2(linux下)所示
   
這樣就輕鬆的將數據從MySQL數據庫中導出了,此時導出的文件在與mysql命令同級的目錄下,即bin目錄下,而且已經將MySQL字符集導出為Latin1的了!現在要做的就是將數據導入MySQL4.0中去!

同樣在4.0版本的mysql命令提示符下(linux系統為mysql的命令目錄下),輸入下面導入命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
如圖3(window下)和圖4(linux下)所示
   
這樣就將字符集從GBK轉為Latin1同時將MySQL從4.1以上版本的轉為MySQL4.0的了!
   
現在講解一下如何從Latin1字符集轉換為GBK的!
   
由於只有MySQL4.1以上的版本才有字符集的概念,所以如果你要將MySQL4.0的字符集從Latin1轉換為GBK字符集的話,必須導入到MySQL4.1以上的版本中,然後再導出!這裡面就多
了一個導出為Latin1的步驟!
   
同樣在MySQL4.0的命令提示符下,輸入下面導出的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql
   
然後導入到MySQL4.1中,輸入下面導入的命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
   
然後在MySQL4.1下轉換字符集,分別輸入下面導出和導入的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql
mysql -uroot -p --default-character-set=gbk -f newdiscuz<discuz.sql
   
如果不出問題的話,那麼轉換就完畢了!其實整個過程還是比較簡單的,只是過程看起來比較麻煩些,但是過程卻是很簡單明了的!
下面舉出一個在導入過程中極易容易出現的問題!


在導入的時候容易出現unknown command '/'這樣的錯誤,其實這是由於MySQL在導出的時候,它有時候給一些繁體字後面自動加上了個反斜槓造成的!解決此問題的辦法就是打開備份的sql(這裡為discuz.sql),提示錯誤的時候會提示具體哪行出現了錯誤,找到那行,把反斜槓去掉就行了!其實你可以用Ultraedit這些文本處理的工具,批量的去處理這些反斜槓

!憑個人經驗,有很多用戶名取的比較怪,這樣就容易出現反斜槓,這樣只要糾正那些用戶名就行了!
    以上是個人在轉換數據過程中的一些經驗之談,很多地方還有待大家完善!


(http://img120.imageshack.us/img120/3741/zbwxcvrfpvxbkgx8zh1.jpg)
(http://img172.imageshack.us/img172/4899/zbwy0gpuk5nvreksnb8.jpg)
(http://img172.imageshack.us/img172/9940/zbwzaoutg1wuckrzij8.jpg)
(http://img146.imageshack.us/img146/2695/zbw0ozlkyduu68pbjf0.jpg)




主題: Re: 資料庫變亂碼
作者: acsite九月 27, 2007, 03:49:55 pm
感謝 jrchou 經常分享經驗談與有用的文章 :)


主題: Re: 資料庫變亂碼
作者: whosee五月 12, 2010, 09:28:21 pm
我也是亂碼的問題

在phpMyAdmin管理的資料庫中
有一個是我自己架的網站用的
還有一個是我的wordpress網站用的

二個網站都是用utf-8編碼
資料庫和所屬資料表的編碼設定都一樣
在網頁上顯示的都很正常
但是在Cpanel裡phpMyAdmin管理的資料庫資料顯示卻不相同
wordpress 資料庫顯示的都正常
我自己架的網站資料庫內容卻都是亂碼
不知問題發生在哪裡

敬請協助解決
謝謝!


主題: Re: 資料庫變亂碼
作者: acsite五月 12, 2010, 11:08:32 pm
我也是亂碼的問題

在phpMyAdmin管理的資料庫中
有一個是我自己架的網站用的
還有一個是我的wordpress網站用的

二個網站都是用utf-8編碼
資料庫和所屬資料表的編碼設定都一樣
在網頁上顯示的都很正常
但是在Cpanel裡phpMyAdmin管理的資料庫資料顯示卻不相同
wordpress 資料庫顯示的都正常
我自己架的網站資料庫內容卻都是亂碼
不知問題發生在哪裡

敬請協助解決
謝謝!

您好:

因為您的帳號下有多個網站
我們無法確認是哪兩個網站有問題
所以還請您回 post 或者使用 PM 告知有問題的網址
謝謝


主題: Re: 資料庫變亂碼
作者: whosee五月 13, 2010, 09:02:08 am
以下是目前資料庫使用狀況:

  資料庫    狀況     網站   
_80717     正常   80717.com 
_80789     正常   80789.com
_incstar    正常   luanqiang.com
_kjsql        亂碼   osart.com
_phpb1     亂碼   art.com.tw/forum/
_wp_001  正常   whosee.com/wordpress


主題: Re: 資料庫變亂碼
作者: acsite五月 13, 2010, 10:24:04 am
以下是目前資料庫使用狀況:

  資料庫    狀況     網站   
_80717     正常   80717.com 
_80789     正常   80789.com
_incstar    正常   luanqiang.com
_kjsql        亂碼   osart.com
_phpb1     亂碼   art.com.tw/forum/
_wp_001  正常   whosee.com/wordpress

我們正在檢查這個問題
稍候會詳細回覆您
謝謝


主題: Re: 資料庫變亂碼
作者: acsite五月 14, 2010, 04:56:03 pm
_kjsql        亂碼   osart.com
_phpb1     亂碼   art.com.tw/forum/

您好:

我們檢查過這兩個網站的資料庫
發現這兩個網站都是在 MySQL 4.0.x 的時候建立資料庫
當時 MySQL 4.0.x 對於多國語言的支援尚未完備
所以其實資料都是使用 latin 編碼存入的
也因此現在使用新版本的 phpMyAdmin 存取時會顯示成亂碼
請您改用 http://pma.cp15.secserverpros.com/utf8/ 登入
即可正常顯示這兩個網站資料庫內的中文


主題: Re: 資料庫變亂碼
作者: whosee五月 19, 2010, 07:51:14 am
還是有點問題
最近我又建一個資料庫rgbook
其資料表GuestBook還是亂碼

但是奇怪的是
這些亂碼在utf-8編碼的網頁上
顯示又很正常
換言之
資料表的內容編碼(utf-8)是沒問題的

那是不是CPanel本身網頁編碼設定的問題?
但是我查CPanel網頁編碼設定也是utf-8
而且其他資料庫(例如wp001)也沒有問題

敬請再協助解決
謝謝!


主題: Re: 資料庫變亂碼
作者: acsite五月 19, 2010, 10:42:51 am
rgbook 也是使用 http://pma.cp15.secserverpros.com/ 即可正常顯示中文
rgbook 之所以無法使用 cPanel 內建的 phpMyAdmin 顯示中文
是因為您的程式寫入資料時使用 latin 編碼所致
請您加上 mysql_query("SET NAMES 'utf8'"); 才能讓程式改用 UTF8 讀寫資料
相關說明請參考以下網址
http://ria.richtechmedia.com/2005/12/19/%E3%80%90%E4%BF%9D%E8%A8%BC%E6%88%90%E5%8A%9F%E3%80%91%E7%9A%84-mysql-%E4%B8%AD%E6%96%87%E4%BA%82%E7%A2%BC%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88/


主題: Re: 資料庫變亂碼
作者: whosee五月 20, 2010, 09:11:48 am
$link = mysql_connect($host, "xxx", "xxx");
mysql_query("SET NAMES 'utf8'");

在建立(連結)資料表時
加上這一行問題就解決了 ;D

但是已經建立的資料表
加上這一行問題就更嚴重
連網頁上原來正常顯示的資料
通通都會變成亂碼

問題總算是解決了
謝謝!


主題: Re: 資料庫變亂碼
作者: acsite五月 20, 2010, 09:47:50 am
但是已經建立的資料表
加上這一行問題就更嚴重
連網頁上原來正常顯示的資料
通通都會變成亂碼

之前已經建立的資料表
因為當時 php 使用 latin 編碼寫入資料
如果以 latin 編碼讀資料,latin 進 latin 出,這樣就不會有問題
但是若加上 set name 改用 utf8,變成 latin 進 utf8 出,網頁就會立刻變成亂碼 :)


主題: Re: 資料庫變亂碼
作者: whosee五月 20, 2010, 12:04:15 pm
其實我還是有很多疑惑的...

1.從phpMyAdmin中去設定字集似乎是無效的
  如果靠的只是這一行程式
   mysql_query("SET NAMES 'utf8'");
   那麼phpMyAdmin中設定字集的功能又是做什麼用的呢?

2.中文是否只有BIG5和UTF8這二種編碼?
  怎麼又有latin這樣的編碼?
  我現在資料表裡的中文
  到底是哪一種編碼?

3.我網頁用的是UTF8的編碼
  為什麼這些中文可以在網頁上正常顯示?
  卻在server端的資料表裡變成亂碼?

4.對於目前資料表裡的內容
  可否用匯出=>轉碼=>匯入的方式
  讓它一致性的通通不再出現亂碼?

謝謝了!


主題: Re: 資料庫變亂碼
作者: acsite五月 20, 2010, 02:32:43 pm
編碼只是一個將文字資料轉換成二進位碼的系統
只要讀寫雙方約定好,不管使用 latin 或是任何編碼都可以

舊版本的 php 程式讀寫資料庫的流程如下:

正常中文字 ---> (用 latin1 格式寫入) ---> 10110
正常中文字 <--- (用 latin1 格式讀取) <--- 10110

如果SET NAMES 'utf8' 之後再讀上面的資料:
亂碼 <--- (用 utf8 格式讀取) <--- 10110

雖然 phpMyAdmin 可以設定連線校對
但是不論您設定哪一種校對
您可以看一下瀏覽器使用的編碼都是 utf8
表示 phpMyAdmin 讀出資料後,會統一將資料轉成 utf8
所以就算是設定 phpMyAdmin 的連線校對為 latin1,仍然會顯示亂碼:

亂碼 <-- (將 latin1 轉成 utf8) <-- 正常中文字 <--- (用 latin1 格式讀取) <--- 10110

您可以將舊資料庫的資料匯出
將資料庫的校對改成 ut8
然後再匯入資料即可改成正確的編碼
不過請注意舊版本的 phpbb 沒有 mysql_query("SET NAMES 'utf8'");
您必須自行修改 phpbb 的程式碼


主題: Re: 資料庫變亂碼
作者: whosee五月 20, 2010, 07:33:04 pm
如果亂嗎是這樣造成的:
正常中文字 ---> (用 latin1 格式寫入) ---> 10110

那麼除非用 latin1 格式讀回來
否則亂碼還是亂碼
匯出來的還是亂碼
所以匯入的也是亂碼

至於以下的說法似乎也不成立:
亂碼 <-- (將 latin1 轉成 utf8) <-- 正常中文字 <--- (用 latin1 格式讀取) <--- 10110

實際上應該是:
正常中文字<-- (網頁編碼設為utf8) <-- 中文字(utf8)<--- (用 latin1 格式讀取) <--- 10110

還有一個很有趣的現象
10110<-- (網頁編碼設為西歐語系ISO) <-- 中文字(utf8)<--- (用 latin1 格式讀取) <--- 10110
前後的亂碼居然是一模一樣的 ???

mysql_query("SET NAMES 'utf8'");
這個指令確實作用很大
完全決定資料表的寫入和讀取的編碼


主題: Re: 資料庫變亂碼
作者: acsite五月 20, 2010, 10:00:33 pm
亂碼 <-- (將 latin1 轉成 utf8) <-- 正常中文字 <--- (用 latin1 格式讀取) <--- 10110

上面這個是指新版 phpMyAdmin 的作法
因為您詢問「從phpMyAdmin中去設定字集似乎是無效的」
所以我們才會特別說明新版 phpMyAdmin 的作法
這樣的作法和一般 php 程式讀資料的流程是不一樣的
因此舊版 phpbb 可以用 latin1 格式讀出正常中文字
但是新版的 phpMyAdmin 即使設定為 latin1
還是無法讀出正常的中文字


主題: Re: 資料庫變亂碼
作者: whosee五月 20, 2010, 11:14:56 pm
現在的問題不是讀不出來正常的中文字
誠如前面討論到的
因為不管用什麼編碼
寫入和讀出只是一種零和的過程
所以在網頁上顯示的都是正常的
(這應該和phpMyAdmin版本無關)

現在的問題是在這零和過程的前半段
亦即將utf8中文用latin編碼過的亂碼
如何能夠直接在資料庫中將之正常化?
(這可能就和phpMyAdmin的版本有關)


主題: Re: 資料庫變亂碼
作者: acsite五月 21, 2010, 03:09:23 am
您可以使用舊版本的 phpMyAdmiin http://pma.cp15.secserverpros.com/utf8/
即可正常看到 _kjsql 與 _phpb1 資料庫內的中文字

如果您希望在 cPanel 的新版本 phpMyAdmiin 看到 _kjsql 與 _phpb1 資料庫內的中文字
可以將  _kjsql 與 _phpb1 資料庫用匯出=>轉碼=>匯入的方式
轉換成正常的 utf8 編碼



主題: Re: 資料庫變亂碼
作者: whosee五月 21, 2010, 08:34:43 am
終於畫下了完美的句點 :D

經過這一系列的討論
確實學到不少東西

感謝acsite詳盡與熱心的協助


主題: Re: 資料庫變亂碼
作者: whosee五月 21, 2010, 09:07:56 am
我得到一個粗淺的結論:

如果沒有特殊設定
資料庫內容都是透過內定的latin編碼進出
所以舊版phpMyAdmin處理資料顯示方式
也就自然而然的用latin編碼把它還原回來

現在資料庫內容的進出編碼比較多元(例如utf8)
所以新版phpMyAdmin處理資料顯示方式
就讓它保持原貌

以上僅止於在phpMyAdmin顯示的方式
至於實際上網頁的顯示
只要程式在資料進出處理上是一致的
資料內容都會正常顯示


主題: Re: 資料庫變亂碼
作者: acsite五月 21, 2010, 10:02:59 am
所以舊版phpMyAdmin處理資料顯示方式
也就自然而然的用latin編碼把它還原回來

現在資料庫內容的進出編碼比較多元(例如utf8)
所以新版phpMyAdmin處理資料顯示方式
就讓它保持原貌

我個人的認知如下  :)

舊版 phpMyAdmin 以 latin1 格式讀出來後
就直接秀在網頁上,所以可以正常顯示 latin1 資料庫內的中文

新版 phpMyAdmin 以 latin1 格式讀出來後
偷偷加工,將原本讀出來已經正常的中文字以「latin1->utf8」的方式又重新編碼
(這個偷加工的方式和您說的「網頁編碼設為西歐語系ISO」是類似的)
然後才秀在網頁上,所以看到的是亂碼


主題: Re: 資料庫變亂碼
作者: whosee五月 22, 2010, 11:34:34 am
單純以網頁瀏覽而言
只有網頁程式和MySQL的互動
phpMyAdmin是不相干的局外者
所以不管有沒有phpMyAdmin
都不影響網頁正常的顯示

當網頁程式加上 mysql_query("SET NAMES 'utf8'"); 這一段程式碼
改變的只是MySQL的資料處理方式
phpMyAdmin只是跟著MySQL的改變來選擇它的顯示方式

目前的現況是
無論舊版或者新版都不能智慧的顯示所有不同狀況下的編碼
舊版自無話說
新版為什麼也不能呢?
我想最重要的原因應該是
作為一個資料庫管理程式
保持資料的原貌顯示應該勝於一切的
否則僅為了方便閱讀而改變顯示(實質內容並沒有改變)
那麼當使用者在不知情的情況下
直接在phpMyAdmin管理網頁上
使用增新或者更改功能
可能就會造成新舊資料編碼錯亂的問題

很感謝acsite熱心幫助解決了我的問題
更感謝他還在百忙中參與這個後續的討論


主題: Re: 資料庫變亂碼
作者: acsite五月 24, 2010, 01:48:32 pm
不客氣 :)
新版 phpMyAdmin 可能是為了統一用 utf8 輸出
所以才會另外偷偷加工
不過詳細原因可能要問 phpMyAdmin 的研發者才會知道了 :D