2010年7月17日 星期六

ConvertZ 針對網頁簡繁轉換之特別解說

請先看過,右邊那篇文章 → 簡繁轉換工具 ConvertZ 下載及使用教學

此篇算是在製作網頁時才用的到,因此另外key一貼,某些動態網頁程式如php,它們沒做簡繁語言包,網頁代碼混簡體,這時你想把它轉成繁體來使用時,就可用 ConvertZ 轉換一下,但有一些小細節,要特別留意,不然轉換後,跑起來會有問題。



Ⅰ、簡單的解說一下,編碼慨念,沒搞清楚這慨念,怎麼搞都是亂碼。

簡體編碼有 GB2312 及 GBK 這2種,GBK 算是 GB2312 擴充

繁體編碼有 BIG5

UTF-8 編碼已包含簡繁日韓●●●等,又叫萬國碼,架站和編寫網頁程式時,最好使用這個。

三者是不相容的,看起來雖然都是中文字,但它們都各自有,自己的編排方式,放的位置,都不相同。



Ⅱ、為何會亂碼會衝字?

機器不認識字,它只認識位置,如 愛 這個字,它在簡繁編碼位置:

簡體GBK → E4C4
繁體BIG5 → 611B

繁體BIG5【 愛 】的位置在611B,但用簡體GBK開時,它會去抓611B位置,而不是去抓E4C4位置,結果顯示【 稲 】,亂碼就是這樣來的,像我們下載大陸的程式或文件檔,一開都亂碼,原因是它們是GBK編碼,我們是BIG5編碼,二者編排中文字都重疊了,如上611B位置,一個是稲,一個是愛。

當然有的開起來沒亂碼,可是確顯示簡體字,那是因為用了萬國碼的關係,萬國碼 Unicode-LE、Unicode-BE、UTF-8、UTF-16 ●●● 等,它裡面簡繁字是區分開來,不會有重疊問題。

大陸不少有名的軟體,還不錯除了用unicode,還支援繁體,其實支不支援繁體我是覺得沒什麼差,就是希望能用unicode編寫,至少開啟來不會亂碼,簡體字也是ok,能接受。

軟體程式,用unicode編寫,可能比較麻煩,多了轉碼步驟,但方便非簡體用戶,至少開啟來不會亂碼。

至於網頁方面,PHP之類的動態網頁程式,最好是用 utf-8 編碼來編寫,可以避免衝碼亂碼問題。

解說那麼長,最主要是在說明,GBK、BIG5、UTF-8看起來都是中文字,但裡面大不同,不可混為一談,不然在轉碼的過程中,會出現一推亂碼。

另外網頁使用utf-8有一個地方要注意,就是不可含到BOM標籤,不然會造成檔頭多一個空白,跑動態網頁程式如 php 也會造成錯誤,參考編寫 UTF-8 網頁,不可含 BOM 標籤



Ⅲ、右下 convertz 小圖 → 程式設定 → 轉碼設定,檢查 BOM 有無打勾,及取消html記號轉文字,如圖:



&#xxxxx後面跟一串英數,那是網頁10進位或網頁16進位,瀏覽器會依據後面的英數,顯示對應文字或符號,很方便的東西,像一些特殊符號或文字不想給瀏覽解析掉,要顯示原來的文字或符號,則可使用網頁10或網頁16進位方式,如果把那html打勾那會變回原樣,有些情況,就是要用html記號,如果變回原樣,而被瀏覽器解析掉,會造成顯示怪怪的,不然就是程序出錯。



Ⅳ、如果想轉換一些簡體網頁程式成繁體,也別整個目錄全轉,convertz似乎有些字符沒處理好,全轉會造成網頁程式在run時錯誤,現在大部份程式都有語言包,不然就是php程序和htm網頁代碼分離,最好只轉語言包,或語言目錄,或轉網頁代碼部份,php程序的部份就不要去動它,有的有zend加密,你轉了,到時run會報錯。

下述我用 簡體Tipask問答系統 做範例,簡體 轉 繁體utf-8:

解壓後,我notepad++開了許多檔看了一下,還不錯,它就是php程序、htm網頁分離的寫法,雖然沒有語言包,但中文字是在htm網頁裡面,於是只要將這部份轉成繁體utf-8即可,如果有要導入mysql的部份,也需至它安裝目錄或檔,將導入檔也轉繁中。

我將view目錄,copy至桌面aaa目錄,後將裡面所有文件全數轉換:



結果(中文字部份已轉成繁體了):



然將轉換後view覆蓋掉就好了。

再來就是mysql導入部份,查了一下是install目錄內的tipask.sql,也把此tipask.sql文件轉成utf-8繁中,後覆蓋原本的就ok了。



Ⅴ、由於我是 utf-8簡 轉 utf-8繁 所以不用更改網頁標頭charset參數,就是下圖那串,有寫過html的人,應該都知到,那是給瀏覽器,用來判定你的網頁,是屬於那種字元編碼。



請參考另一篇文章,notepad++查找目錄文件中的某字串教學



上圖搜出來的 charset 已是 utf-8 不用改,但如果是簡體gbk或gb2312,轉成繁體utf-8,就必須,將查找出來的檔案,並打開它們,把裡面的那串charset參數改成utf-8,不然網頁run起來會亂碼,理由在開頭已經說過了,你已轉繁體utf-8,但確用gbk來開,就會造成亂碼。



Ⅵ、另外補充一下,網頁簡體轉繁體時,只能轉繁體utf-8,不能轉繁體big5,破爛big5有許功蓋asscii92問題,簡體沒這問題,所以沒做這方面特別處理。

如果你硬要轉成繁體big5,到時跑起來,會因為asscii92問題,而容易出錯,進行mysql資料的導入導出,也會因為asscii92問題,而變的不好處理。


大略說明,就到這了,其他相關文章 → 99_簡繁轉換相關

沒有留言:

張貼留言