旅聯網論壇
 
進階搜尋
   
 
 
     

旅聯網論壇 首頁 留言討論公開園地 我的網站出包...求救!
從之前的文章開始顯示:   
      台北時間 (GMT + 8 小時)  
發表新主題  回覆主題

星期一 四月 07, 2014 10:12 am
發表人 內容
(pcchen)
訪客





文章主題: 我的網站出包...求救! 引言回覆

我的網站 pcchen.com 昨晚發現只要是從 MySQL 資料庫取出的中文字都成了亂碼,我還在使用big5 encoding,好日子過久了,好幾年沒碰系統、軟體的事,手忙腳亂救不回來。不知那位仁兄對此有經驗,指點一下。感恩!
 
      Back To Top  

星期一 四月 07, 2014 10:50 am
發表人 內容
skr
Site Admin


註冊時間: 2006-01-15
文章: 842
來自: 遊山玩水探訪隊

文章主題: 引言回覆

在連接 MySQL 時,直接宣告字元編碼
代碼:

$dbh = mysql_connect(dbhost, dbuser, dbpws);
mysql_query(SET NAMES 'big5',$dbh);

_________________
健康、快樂、時間,再加上一點金錢
https://www.yestome.com
 
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
      Back To Top  

星期一 四月 07, 2014 12:19 pm
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

我有列這一條:
mysql_query("set names Big5",$link);
以前都沒問題,
問題是從 phpMyAdmin 看到的資料庫中的中文都變成亂碼了。
看到:
MySQL 文字編碼: UTF-8 Unicode (utf8) 無法修改。
MySQL 連線校對: Big5_chinese_ci 改了也沒用。
 
      Back To Top  

星期一 四月 07, 2014 12:56 pm
發表人 內容
skr
Site Admin


註冊時間: 2006-01-15
文章: 842
來自: 遊山玩水探訪隊

文章主題: 引言回覆

MySQL 及 PHP 各是那一版本的,有更新過嗎??
如果沒有更新升級,應該不會發生這樣的事
查一下以下的編碼設定各是什麼,照理應該要一樣
尤其是 client、connection、results
代碼:

character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_system

_________________
健康、快樂、時間,再加上一點金錢
https://www.yestome.com
 
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
      Back To Top  

星期一 四月 07, 2014 5:03 pm
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

我是買 goDaddy LAMP 組合,所以我懷疑它更新了系統,沒處理好,或被人侵入所造成(我寫的舊程式資安很差,一直想改又懶得動手)。

因為我發現資料結構內原來中文欄位的校對設定是 big5_chinese_ci 都變成了 latin1_swedish_ci,只要改過來,新的資料存取就恢復正常。現在的問題是舊的資料,尤其是留言版上一次備份是去年三月,就沒救了,我不知道有沒有辦法把這些已成為亂碼的資料救回來,目前是希望不大。

我用 phpinfo() 得到
mysql Client API version 5.0.77
PHP Version 5.2.17

但用 phpMyAdmin 看到MySQL的是
伺服器版本: 5.5.33
.....
character set client utf8
(整體值) latin1
character set connection utf8
(整體值) latin1
character set database latin1
character set filesystem binary
character set results utf8
(整體值) latin1
character set server latin1
character set system utf8
character sets dir /usr/local/mysql-5.5.33/share/mysql/charsets/
.......
 
      Back To Top  

星期一 四月 07, 2014 10:28 pm
發表人 內容
skr
Site Admin


註冊時間: 2006-01-15
文章: 842
來自: 遊山玩水探訪隊

文章主題: 引言回覆

哦喔,看來是主機商更新了系統,直接把你 MySQL 中的內容全改了
目前來看,資料的存放是採 latin1 編碼,但是取出卻是用 UTF8
結果就是編碼對不起來,可以試著用 SET NAMES latin1
將 client、connection、results 統一成 latin1 看看
_________________
健康、快樂、時間,再加上一點金錢
https://www.yestome.com
 
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
      Back To Top  

星期一 四月 07, 2014 10:35 pm
發表人 內容
Daniel



註冊時間: 2006-01-24
文章: 868
來自: 東方琉璃光世界

文章主題: Re: 我的網站出包...求救! 引言回覆

(pcchen) 寫到:
我是買 goDaddy LAMP 組合,所以我懷疑它更新了系統,沒處理好,或被人侵入所造成(我寫的舊程式資安很差,一直想改又懶得動手)。

.......

可能如PCChen兄猜測的,godaddy更新了資料庫系統。
我去年將旅聯網論壇資料庫資料從big5更新到utf-8的過程,或許可供您參考http://living.donghong.info/blog/?page_id=12856(請忍受我的broken English)。

根據我的經驗,godaddy安裝的mysql內部編碼應該是latin1。big5 中文資料存進資料庫時,會再被轉成latin1。這次可能如SKR所說,讀出時是用utf-8,以至於看到亂碼。
_________________
--應無所住而生其心-- 冬烘先生
 
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
      Back To Top  

星期二 四月 08, 2014 5:30 pm
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

我試著用 mysql_query("set names latin1",$link); 賓果!至少讓我在螢幕上看到正確顯現的留言版,並存成文字檔,以復原資料庫用。很奇怪的是其他的資料,並不是所有欄位都能成功,部份欄位還是有亂碼的現象。還好這些資料在我的localhost都是正確且是完整的,將它們用SQL指令重裝回去,還不算是大問題。
現在的問題是,新的留言會變成亂碼,我決定用UTF8 UNICODE的方式重裝資料。
我看不太懂Daniel這篇網址 living.donghong.info/blog/?page_id=12856 從big5更新到utf-8的過程,尤其是utf-8 characters stored in a default latin1 encoding database, 雖然我在網頁上看到正確顯示的留言版,但在phpMyAdmin上看到的都是亂七八糟的東西,怎麼受的了。
但不這麼做,以後可能又會來一下。我準備花一點時間研究研究,有甚麼特別要注意的,請指點一下。
 
      Back To Top  

星期三 四月 09, 2014 9:45 am
發表人 內容
Daniel



註冊時間: 2006-01-24
文章: 868
來自: 東方琉璃光世界

文章主題: Re: 我的網站出包...求救! 引言回覆

(pcchen) 寫到:
我試著用 mysql_query("set names latin1",$link); 賓果!至少讓我在螢幕上看到正確顯現的留言版,並存成文字檔,以復原資料庫用。很奇怪的是其他的資料,並不是所有欄位都能成功,部份欄位還是有亂碼的現象。還好這些資料在我的localhost都是正確且是完整的,將它們用SQL指令重裝回去,還不算是大問題。
現在的問題是,新的留言會變成亂碼,我決定用UTF8 UNICODE的方式重裝資料。
我看不太懂Daniel這篇網址 living.donghong.info/blog/?page_id=12856 從big5更新到utf-8的過程,尤其是utf-8 characters stored in a default latin1 encoding database, 雖然我在網頁上看到正確顯示的留言版,但在phpMyAdmin上看到的都是亂七八糟的東西,怎麼受的了。
但不這麼做,以後可能又會來一下。我準備花一點時間研究研究,有甚麼特別要注意的,請指點一下。

PCChen兄的情況跟我當時情況若有不同,可忽略那一行。現在如果您已可以在local端的文字編輯器看到中文,可從我該篇的第4步驟開始進行:
4.用文字編輯器(如NotePad++)將資料庫備份(*.sql)轉編碼為unicode。存檔。
5.在godaddy另外建立一個新的空資料庫,若以latin1的編碼方式import剛剛儲存的資料庫備份。此時在godaddy的phpMyAdmin,應該仍是看到亂碼,但是讀出顯示在網頁是正常。
6.若是以unicode編碼 import,在godaddy的phpMyAdmin看到中文是正常的。但從此在php程式中就要使用$mysqli->query("SET NAMES utf8") 來讀或寫資料。
_________________
--應無所住而生其心-- 冬烘先生
 
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
      Back To Top  

星期三 四月 09, 2014 11:23 am
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

謝謝Daniel兄的熱心幫助,我目前也是將localhost上所有資料庫輸出存檔的(*.sql)轉編碼為unicode。如果不想重建資料表,只將目前資料表內的資料清空,然後把所有欄位的校對(Collation)欄目前變為latin1_swedish_ci的都改為utf8_unicode_ci然後用SQL指令,重灌資料,不知是否可行?辦法笨點,但比較能掌握,就怕那天又給搞成latin1_swedish_ci,又得來一次。

不知Daniel兄資料表上欄位的校對(Collation)欄,是utf8_unicode_ci 還是latin1_swedish_ci ?
 
      Back To Top  

星期三 四月 09, 2014 3:21 pm
發表人 內容
Daniel



註冊時間: 2006-01-24
文章: 868
來自: 東方琉璃光世界

文章主題: Re: 我的網站出包...求救! 引言回覆

(pcchen) 寫到:
謝謝Daniel兄的熱心幫助,我目前也是將localhost上所有資料庫輸出存檔的(*.sql)轉編碼為unicode。如果不想重建資料表,只將目前資料表內的資料清空,然後把所有欄位的校對(Collation)欄目前變為latin1_swedish_ci的都改為utf8_unicode_ci然後用SQL指令,重灌資料,不知是否可行?辦法笨點,但比較能掌握,就怕那天又給搞成latin1_swedish_ci,又得來一次。

不知Daniel兄資料表上欄位的校對(Collation)欄,是utf8_unicode_ci 還是latin1_swedish_ci ?

資料表(Collation)欄,只要是中文字串都是用utf8_unicode_ci。資料庫備份中應該有包含結構(資料表建立語法)。若有,則檢視一下 .sql檔中的建立資料表sql語法是否為unicode,若不是unicode,則使用文件編輯器,來個global replace。再從godaddy的空資料庫匯入這個 .sql檔。

若資料庫備份檔未含結構(table),則可照PC兄所說的將(Collation)欄目前變為latin1_swedish_ci的都改為utf8_unicode_ci,再逐一匯入資料表資料。
_________________
--應無所住而生其心-- 冬烘先生
 
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
      Back To Top  

星期三 四月 09, 2014 4:52 pm
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

謝謝Daniel兄的幫助,我已經逐步復原資料庫了,而且將網頁和資料都改為utf8了,對安全性也開始做修正了。
在local phpMyAdmin 就可以新增,修改dbUser和password,但goDaddy 的phpMyAdmin無法修改password,是否要在goDaddy account login才能處理,好久沒處理這種事了,手忙腳亂的。
 
      Back To Top  

星期三 四月 09, 2014 10:22 pm
發表人 內容
(pcchen)
訪客





文章主題: Re: 我的網站出包...求救! 引言回覆

感謝 skr兄和Daniel兄的指點,我終於復原網站,而且更安全了。
 
      Back To Top  

星期四 四月 10, 2014 9:45 am
發表人 內容
Daniel



註冊時間: 2006-01-24
文章: 868
來自: 東方琉璃光世界

文章主題: Re: 我的網站出包...求救! 引言回覆

(pcchen) 寫到:
謝謝Daniel兄的幫助,我已經逐步復原資料庫了,而且將網頁和資料都改為utf8了,對安全性也開始做修正了。
在local phpMyAdmin 就可以新增,修改dbUser和password,但goDaddy 的phpMyAdmin無法修改password,是否要在goDaddy account login才能處理,好久沒處理這種事了,手忙腳亂的。

恭喜PC兄網站復原了。登入godaddy後在hosting account 的control center可以修改資料庫密碼,不過想必PC兄已經知道。
這種更動資料庫的事情還是不要常做,比較清心啊。
_________________
--應無所住而生其心-- 冬烘先生
 
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
      Back To Top  
發表新主題  回覆主題


1頁(共1頁)
前往:  
     
本正體中文由 SKR Studio 製作 -