2011年7月10日 星期日

去掉 BIG-5 轉 UTF-8 衝碼字的反斜線

討論】:關於去掉 BIG-5 UTF-8 衝碼字的反斜線 : http://phpbb-tw.net/phpbb/viewtopic.php?t=41901

進藤ヒカル さん


虛擬画像

作成: 04/28/07 04:57pm
關閉目前運作中的 BIG-5 舊網站

在備份整個網站的資料之前,當然要先關閉網站,以免又有不知情的網友,貼心的想要發表新的文章或是回覆文章。請用管理者身分登入,然後點選 “系統管理員選單”:

《按一下可顯示圖片》

這個就是 XOOPS 後台管理畫面的一部份,最底下可以看到目前的版本還是 XOOPS 2.0.13.2。由於 XOOPS 改版速度太慢,幾近於 “超龜速”,所以這已經是很久以前的版本,目前最新的 2.0 系列版本是 2.0.16。不過這個版本的 “Upgrade” 升級模組有 bug,導致 LDAP 功能異常!如果是全新安裝架設的網站,大概比較沒有問題。

《按一下可顯示圖片》

在 “系統管理” 模組點選 “系統設定” 或是 “偏好設定”:

《按一下可顯示圖片》

把 “暫時關閉網站” 改 “是”,這樣子就只有管理者可以看到整個網站,建議你登出帳號確認一下網站是不是真的關掉了?

《按一下可顯示圖片》

如果沒有 “登出” 就直接回到網站 “首頁” 的話...

《按一下可顯示圖片》

其實看出網站到底關掉了沒?請按一下 “登出”:

《按一下可顯示圖片》

這樣子才看到網站關閉的畫面,提醒你可以先到 “BNW 會議室” 逛逛,晚點再回來瞧瞧,但是要記得回來喔~不要到處亂逛到其他網站去了... :oops:

《按一下可顯示圖片》

進藤ヒカル さん


虛擬画像

作成: 04/28/07 04:58pm
從租用主機備份資料

要從租用的網路主機轉移網站,當然要先把整個 MySQL 資料全部備份出來。打開網路主機廠商提供的 phpMyAdmin 網頁,先在左邊的面板點選要備份的資料,例如:wusin_test,再按一下網頁上方的 “輸出” 鈕,然後按 “全選” 匯出全部的資料表。

《按一下可顯示圖片》

這種備份方式跟你直接在 phpMyAdmin 首頁點選 “輸出” 不同,沒有打開指定的資料,直接在首頁點選 “輸出” 再點選資料把整個資料全部匯出,因此在另外一台 MySQL 主機匯入資料的時候,就必須是使用相同的資料名稱。因為我想要更換資料名稱,再使用 wusin_test,因此我用全選資料表的方式來匯出整個網站資料

要提醒你的是... 在 SQL 選項的結構請點選 Add DROP TABLE、Add IF NOT EXISTS 這兩個選項,第一個在 .sql 檔案裡加上刪除舊的資料表指令,第二個指令是如果資料存在的話,就自動新增資料表。這樣子可以減少匯入資料時候的錯誤。

請點選 “使用完整新增指令”:

《按一下可顯示圖片》

接著點選 “下載儲存”,壓縮方式請選用 “zipped”,壓縮 .zip 檔案。雖然 Linux 主機都支援 .gz 檔,不過使用這種格式,可能無法完全解壓縮,解到一半就出問題!

《按一下可顯示圖片》

phpMyAdmin 資料備份、壓縮好,然後自動下載為 wusin_test.sql.zip 壓縮檔。

《按一下可顯示圖片》

解壓縮之後就看到備份的 wusin_test.sql 資料檔案。

《按一下可顯示圖片》

進藤ヒカル さん


虛擬画像

作成: 04/28/07 04:59pm
在 Mac 檢視備份的資料內容

所有的 .sql 檔案都是 “純文字” 檔案,基本上可用任何一個文字編輯工具開啟,不過呢... 如果是 BIG-5 HKSCS 編碼的檔案,這個檔案無論在 Mac OS X 還是 Windows 上都會遇到問題!

我用 “文字編輯” 以 Unicode(UTF-8)的方式來開啟 wusin_test.sql 資料檔,結果... 當然是無法開啟囉!

《按一下可顯示圖片》

點選 “自定編碼列表...”:

《按一下可顯示圖片》

再點選新增 “繁體中文 (Windows, DOS)” 編碼方式...

《按一下可顯示圖片》

就可以新增更多的文件語系,既然 UTF-8 與 “繁體中文 (Mac OS)” 都無法開啟,試試看 “繁體中文 (Windows, DOS)” 吧~

《按一下可顯示圖片》

居然說無法使用文字編碼的 “繁體中文 (Windows, DOS)” 來打開檔案! :-o

《按一下可顯示圖片》

再點選全部的 “繁體中文” 編碼方式... 每種格式都測試看看,竟然沒有一種格式可以開啟這個 .sql 檔!事實上就算你改用著名的 BBEdit 也無法正確的開啟這個繁體中文編碼的 .sql 檔! :Orz

《按一下可顯示圖片》

好吧,點選 “前往 / 連接伺服器” 把這個 .sql 資料檔案透過網路拷貝給 Windows 來試試看吧...

《按一下可顯示圖片》

連接到 Windows 共享的 “網路檔案夾”:

《按一下可顯示圖片》

把這個 .sql 檔案複製給 Windows。資料夾裡面的其他檔案是我先前所做的測試,等到網站租約到期以前,決定關閉的時候再做一次最後的備份。

《按一下可顯示圖片》

進藤ヒカル さん


虛擬画像

作成: 04/28/07 05:00pm
在 Windows 檢視備份的資料內容

這就是同樣的檔案在 Windows 看到的畫面,整個 .sql 資料大約有 11MB 左右:

《按一下可顯示圖片》

直接用 “記事本” 打開 wusin_test.sql 就看到這樣的畫面... 嗯~有點奇怪對吧?

《按一下可顯示圖片》

別以為資料的內容原本就應該長這樣喔!事實上是因為 Linux 對於換行的方式與 Windwos 不同,所以原本應該換行的地方都沒有換行,整個 .sql 文件變成超大的一行段落!

在 BIG-5 編碼格式底下,最大的問題就是 “” 這號蓋世人物的衝碼問題,為了避開文字內碼與 SQL 衝突,所以在後面補上了一個多餘的 \ 符號。

《按一下可顯示圖片》

並不是每個 “” 後面都會補上 \ 符號,你可以看到如果是在一行最後的位置,因為 \r\n 段落換行 (也就是 Enter 鍵) 的關係,因此補上 \\rn 這樣的符號。

《按一下可顯示圖片》

進藤ヒカル さん


虛擬画像

作成: 04/28/07 05:08pm
透過ConverZ把BIG-5UTF-8

雖然 Mac OS X 也有幾個還滿好用的轉換檔案內容編碼格式的工具,不過都沒有 ConvertZ 好用,只是你得用 Windows 2000/XP/Vista 來跑 ConvertZ 這個 Windows 版本的工具程式。

ConvertZ 除了可以轉換文字編碼方式,還可以同時幫我們搜尋、取代特定的文字,一次完成兩件事,又完全免費,還需要安裝就能直接使用,真是相當不錯的 “站長必備工具”! :-)

你可以在原作者網站下載 ConvertZ:http://alf-li.pcdiscuss.com/c_convertz.html
ConvertZ 屬於環保的綠色軟體,無須安裝,只要將所有檔案解壓到新資料夾,然後直接執行 convertz.exe 即可。

要解決 “” 等中文字與 SQL 指令衝突的問題,你可以用 “記事本” 建立一個搜尋與取代的對照檔,例如 “將BIG-5UTF-8修正” 或是 “修正”,檔名隨便你取,但是副檔名必須是 .dat,因此得用右鍵指定用 “記事本” 來開啟 .dat 文字檔。

《按一下可顯示圖片》

搜尋與取代的對照表就像這樣,把 “\\” 取代為 “”,刪除後面重複的 “\\” 雙反斜線符號。

《按一下可顯示圖片》

除了有重複的 “\\” 雙反斜線符號,也有 “\” 單反斜線的情況,只有緊跟著這些字後面的 \ 符號才需要刪除,並不是把全部的 \\ 或 \ 全數刪除喔!

《按一下可顯示圖片》

打開 ConverZ,在來源檔案把 wusin_test.sql 加入到轉換清單,再按一下 “進階選項”,點選輸入格式為 “Big5”、輸出格式為 “UTF-8”,請注意一定要記得點選 “語文輸出模式:繁體中文”,這樣才轉換” 的替換文字。

《按一下可顯示圖片》

確定是 “Big5 > UTF-8 繁體”,點選畫面底下的 “轉換檔案內容” 再按 “開始轉換”:

《按一下可顯示圖片》

轉換好了,總共花了 19 秒左右。在一台 Pentium III-1.0GHz 雙 CPU 的老舊電腦上能跑出這樣的成績算是滿快的了。

《按一下可顯示圖片》

轉換好的 UTF-8 格式檔案自動放在 “我的文件” 裡面,請先在檔名後面加上 utf8 字樣以便區隔:

《按一下可顯示圖片》

直接用 “記事本” 打開這份文件,然後找一下 “” 等字,看看後面的 \\ 或 \ 符號處理好了沒?嗯~果然處理好了! :-)

《按一下可顯示圖片》

不過呢... 我發現如果 “” 出現在一行的最後,剛剛的轉換編碼+替換文字的動作把原本 \r\n 的 Enter 符號破壞掉!變成 r\n,這將導致 “” 結尾的那一行最後,在網頁上看到多了一個 r!

《按一下可顯示圖片》

這個問題要如何解決呢?其實也很簡單,那就是再轉換一次吧!我特別緻做了另外一個轉換檔:

《按一下可顯示圖片》

檔案內容其實就是把 “r\n” 的錯誤改回到 “\r\n”,這樣子就可以更完美的修正,因為前面移除 \\ 與 \ 符號的問題喔~ :lol:

《按一下可顯示圖片》

為了解省各位的時間,我把這兩個轉換衝碼” 的 .dat 檔放在這裡,你可以點選連結把檔案下載回去:

http://bnwwoo.googlepages.com/big5utf801.dat
http://bnwwoo.googlepages.com/big5utf802.dat

要怎樣使用這兩個檔案呢?其實滿簡單的,在 ConvertZ 的工作列圖示上,按一下右鍵並點選 “程式設定”:

《按一下可顯示圖片》

按 “匯入” 並點選指定的 .dat 檔即可:

《按一下可顯示圖片》

按下編輯就可以在 “詞彙修正表” 這裡修改或新增替換文字:

《按一下可顯示圖片》

這是剛剛第一次執行 \\ 與 \ 轉換的對照表,每次只能選用一種,處理的先後順序可以相反喔!要先處理 “\\ 與 \” 修正,再處理 “r\n” 的修正!

《按一下可顯示圖片》

這次要做的轉換動作是把 “輸入格式” 的 UTF-8 “輸出格式” 的 UTF-8,也就是編碼方式變,但是要記得點選 “繁體中文” 以便取代我們想要修正的文字!

《按一下可顯示圖片》

確定是 “UTF-8 > UTF-8 繁體”,就可以 “開始轉換” 囉~

《按一下可顯示圖片》

轉換時間同樣需要 19 秒左右:

《按一下可顯示圖片》

這就是轉換完畢的 UTF-8 編碼的 MySQL 資料檔案!這個檔案可以被 “記事本” 或是 Mac OS X 的 “文字編輯”、BBEdit 等工具直接開啟,而看到任何錯誤!

《按一下可顯示圖片》

趕緊找一下剛剛的 “練功r\n”,果然現在被修正為正確的 “練功\r\n”! :lol:

《按一下可顯示圖片》

OK,現在你已經學會怎樣把最重要的 .sql 資料從 BIG-5 完美的轉換 UTF-8,如果你發現轉換之後的資料有亂碼,請檢查原始的 BIG-5 檔案,通常原始檔案裡面就已經是亂碼了!亂碼進、當然亂碼出... >:)

接下來把 BIG-5 網站程式,無論你是使用 phpBB、XOOPS 還是哪一套網站系統,都可以透過 ConverZ 來幫你轉換,只要點選整個目錄並按 “全部加入”,就可以一次好整個網站檔案夾!如果擔心轉換程式出錯的話,你也可以下載 phpBB、XOOPS 官方提供的 UTF-8 版本,直接覆蓋取代舊的 BIG-5 程式就行了。只是這麼做的話,要特別留意目前網站使用的程式版本。

如果還在使用舊的 BIG-5 版本,建議你先好 .sql 資料,並匯入到轉換好的 UTF-8 網站程式,最後再執行升級系統版本的動作。當然,你也可以在轉換網站系統之前,先把 BIG-5 的舊網站程式升級到最新版本,再做轉換 .sql 資料編碼語系的動作,最後直接用 UTF-8 新版程式覆蓋舊版。

如果你有自行修改過 phpBB 或 XOOPS 程式碼,就不適合用 “取代舊版程式” 的做法,只能採用升級網站系統的方式。這部份就不在這裡討論了。

進藤ヒカル さん


虛擬画像

作成: 04/28/07 05:11pm
匯入 UTF-8 編碼的資料到 MySQL

透過網路上的芳鄰把轉換好的 wusin_test utf8.sql 傳回到 Mac OS X,如果你的話,也可以透過 “隨身碟” 等其他儲存設備。

《按一下可顯示圖片》

這次直接用 “文字編輯” 就可以開啟 UTF-8 編碼的 .sql 資料囉! :lol:

《按一下可顯示圖片》

喜歡用 phpMyAdmin 來管理資料,有更直接好用的工具,幹嘛不用呢?請使用 MySQL 提供的 MySQL Administrator 來管理資料吧~
先按一下 “Catalogs”,並點選要匯入的資料,如果是第一次匯入資料,你得先按一下 “+” 號鈕,新增一個 xoops 之類的資料,再按一下 “Restore” 工具鈕,這樣子 MySQL Administrator 才知道你要把 “備份的資料表” 匯入到哪一個資料庫裡?

請按 “Choose File...” 並點選要匯入的資料檔:

《按一下可顯示圖片》

要選 “wusin_test utf8.sql” 喔~資料的編碼格式UTF-8

《按一下可顯示圖片》

在正常的情況下,需要點選 Options 的兩個選項,只要直接按 “Restore Backup” 即可,如果看到錯誤訊息,很可能是在 phpMyAdmin 匯出資料的時候沒有選好,你可以在 MySQL Administrator 刪除舊的資料,重建一個新的資料,再重新匯入看看。

《按一下可顯示圖片》

如果有錯誤訊息,一定要想辦法解決,否則資料很可能沒有完整匯入!遷移的新網站也可能因此無法正常運作!

《按一下可顯示圖片》

正在 Restoring 回存備份的資料...

《按一下可顯示圖片》

回存完畢囉!請檢查看看資料表數量是否與舊的資料相同?如果有短缺,肯定是前面在 phpMyAdmin 匯出的時候點選了錯誤的選項,該選的沒選,點選了該選的項目。

《按一下可顯示圖片》

雖然你也可以用 “Ignore SQL errors” 略過 SQL 指令錯誤來匯入資料,不過通常在這種情況下,匯入的資料完整!

《按一下可顯示圖片》

總共匯入了 126 張資料表,你可以與 phpMyAdmin 比對看看,是不是同樣的 126 張資料表格?當然囉,這是我們的網站,你的網站因為安裝的模組不同,資料表數量也相同。

《按一下可顯示圖片》

再次提醒你,要記得點選 phpMyAdmin 最前面的這兩個重要選項,再匯出資料
■ Add DROP TABLE : 加上刪除資料表指令。
■ Add IF NOT EXISTS :加上檢查資料表示否存在的指令。

《按一下可顯示圖片》

進藤ヒカル さん


虛擬画像

作成: 04/28/07 05:13pm
最後的檢查工作:比對新、舊網站是否一致?

這是舊的「聞字網」網站:

《按一下可顯示圖片》

這是新的搬家的「BNW 時尚藝文館」網站,請留意兩個網站的網址不同,但是網頁內容應該幾乎完全相同喔~

《按一下可顯示圖片》

我點選「聞字網」其中的一篇公告網頁,讓你再仔細比對一下:

《按一下可顯示圖片》

接著點選「BNW 時尚藝文館」相同的一篇公告網頁畫面,請比對看看是不是一模一樣呢? :-)

《按一下可顯示圖片》

表面上一模一樣的網站,骨子裡可完全不同喔!我把「聞字網」的 “顯示方式 / 文字編碼” 改 “Unicode (UTF-8)” 就看到整個網站通通變成亂碼!必須點選 “預設值” 或是 “繁體中文 (BIG5 HKSCS)” 才能恢復正常。

《按一下可顯示圖片》

同樣的動作,將瀏覽器的 “顯示方式 / 文字編碼” 改 “Unicode (UTF-8)” ,你看到「BNW 時尚藝文館」並沒有出現亂碼,反倒是故意點選 “繁體中文 (BIG5 HKSCS)” 的時候出現亂碼!

《按一下可顯示圖片》

也就是說,我們已經把一個過去以 BIG-5 架設的網站,成功的轉移到新的網址、新的網站、新的資料 (資料名稱與過去不同),新的 UTF-8 多國語系編碼方式! :lol: :lol:

《按一下可顯示圖片》

現在直接在 “搜尋文章” 輸入 “練功”,找找看剛剛的 “” 以及 “r\n” 修正處理,到底有沒有轉換成功?

《按一下可顯示圖片》

嗯嗯~你可以看到這裡的 “練功” 後面並沒有多了一個 \ 反斜線編碼喔!

《按一下可顯示圖片》

而另外一行結尾的 “練功” 同樣 100% 完美!不但後面沒有多餘的 \ 反斜線,也沒有多餘的 r 字元喔~真是太完美、太棒了! :lol: :-)

《按一下可顯示圖片》

其實要感謝的還是 “竹貓”,他們幫我完成了前面的 90%,我只是在後面補上缺少的那 “r\n” 修正的 10% 而已,呵呵~ :lol:

進藤ヒカル さん


虛擬画像

作成: 04/28/07 05:17pm
附錄:將BIG5UTF8編碼修正2.dat

代碼: 全部選択
-1,-1,-1,-1,-1,-1 修正前,修正 么r\n,么\r\n r\n,\r\n 吒r\n,吒\r\n 吭r\n,吭\r\n 沔r\n,沔\r\n 坼r\n,坼\r\n 歿r\n,歿\r\n 俞r\n,俞\r\n 枯r\n,枯\r\n 苒r\n,苒\r\n 娉r\n,娉\r\n 珮r\n,珮\r\n 豹r\n,豹\r\n 崤r\n,崤\r\n 淚r\n,淚\r\n r\n,\r\n 廄r\n,廄\r\n 琵r\n,琵\r\n 跚r\n,跚\r\n 愧r\n,愧\r\n 稞r\n,稞\r\n 鈾r\n,鈾\r\n 暝r\n,暝\r\n r\n,\r\n 墦r\n,墦\r\n 穀r\n,穀\r\n 閱r\n,閱\r\n 璞r\n,璞\r\n 餐r\n,餐\r\n 縷r\n,縷\r\n 擺r\n,擺\r\n 黠r\n,黠\r\n 孀r\n,孀\r\n 踊r\n,踊\r\n 髏r\n,髏\r\n 躡r\n,躡\r\n 尐r\n,尐\r\n 佢r\n,佢\r\n 汻r\n,汻\r\n 岤r\n,岤\r\n 垥r\n,垥\r\n 柦r\n,柦\r\n 胐r\n,胐\r\n 娖r\n,娖\r\n 涂r\n,涂\r\n 罡r\n,罡\r\n 偅r\n,偅\r\n 惝r\n,惝\r\n 牾r\n,牾\r\n 莍r\n,莍\r\n 傜r\n,傜\r\n 揊r\n,揊\r\n 焮r\n,焮\r\n 茻r\n,茻\r\n 鄃r\n,鄃\r\n 幋r\n,幋\r\n 滜r\n,滜\r\n 綅r\n,綅\r\n 赨r\n,赨\r\n 塿r\n,塿\r\n 縷r\n,縷\r\n 槙r\n,槙\r\n 擺r\n,擺\r\n 箤r\n,箤\r\n 踊r\n,踊\r\n 嫹r\n,嫹\r\n 髏r\n,髏\r\n 潿r\n,潿\r\n 蔌r\n,蔌\r\n 醆r\n,醆\r\n 嬞r\n,嬞\r\n 獦r\n,獦\r\n 佢r\n,佢\r\n 螏r\n,螏\r\n 餤r\n,餤\r\n 燡r\n,燡\r\n 螰r\n,螰\r\n 駹r\n,駹\r\n 礒r\n,礒\r\n 鎪r\n,鎪\r\n 瀙r\n,瀙\r\n 酀r\n,酀\r\n 瀵r\n,瀵\r\n 騱r\n,騱\r\n 酅r\n,酅\r\n 贕r\n,贕\r\n 鱋r\n,鱋\r\n 鱭r\n,鱭\r\n r\n,\r\n 育r\n,育\r\n ﹏r\n,﹏\r\n

hollowaysxp さん


虛擬画像

作成: 04/30/07 05:19am
光哥的轉換方式看了之後大概了解方法了。

我之前也是用phpBB2.0.21 Big5版,資料校對瑪是Big5
轉換方式是把資料備份Mysql 4.0的形式。

然後再把Mysql4.1校對碼改跟Mysql4.0預設一樣的編碼方式拉丁文。
再把資料還原這樣子資料就轉變UTF-8:shock:

沒有留言:

張貼留言