【問題】請問 big5, unicode and unicode UTF-8 的差異





頁 : [1] 2

otai
2006-03-30, 06:58 PM
在做網頁的時候,如果存檔編碼為big5碼的話,用瀏覽器上其他的編碼(如西歐或是簡體編碼等)都無法正確顯示出現亂碼這是正常的,而如果改為unicode或是UTF-8編碼的話就可以瀏覽,但是不知道unicode和unicodeUTF-8有何差異存在,會不會影響到網頁搜尋引擎,不知哪位高手可以教教小弟..
以下是使用不同編碼後存檔的一個例子,同樣檔案用不同的編碼檔案大小會有不同.
big5 = 9k
UTF-8 = 10k
unicode = 17k




otai
2006-03-30, 07:42 PM
試過幾次之後,發現只有用unicode編碼才可以上繁體與簡體都可顯示.

穩ㄝ
2006-03-30, 08:02 PM
那是雙位元字的編碼....因為早期繁體中文是用big5編碼法....而簡體中文則是用gb碼編碼法....也因為編碼方式的不同....同一個內碼....在繁體和簡體下會顯示出不一樣的字....在軟體要跨國販售時....就會很痛苦....後來為了解決這個問題....所以後來就定出了unicode的編碼方式....在unicode原則下....一個內碼只代表一個中文字....所以當然就不會出現亂碼的問題囉....

otai
2006-03-30, 08:17 PM
請教穩也大大為何unicode存檔會大過unicode(UTF-8)的格式那麼多?且說後者也是unicode編碼,它改用簡體去瀏覽的話卻無法正確讀繁體中文呢?

琥珀
2006-03-30, 08:21 PM
沒特別說明,Unicode 在微軟視窗系統下就是指 UTF-16 Little Endian。
Unicode (UTF-8) 就是 UTF-8,會特別指明。

UTF-16 可和 UCS-2 大致視為相同。
UTF-16 就是 2 bytes,UTF-8 是 1 byte ~ 4 bytes。可變動字節 (位元組)。
UTF-8 編碼的中文,很多都是落在 3 bytes,所以才有人說資料庫轉換後,空間會比 Big5 多出一半。

不想了解這麼多,Windows 使用者至少記得以下幾點:

1. 和網頁有關的,需要利用網頁應用的資料,像是 html/xml/txt,用 UTF-8 就對了。
2. 不需要交流的,或是應用程式,用 UTF-16,或是非 Unicode 編碼,都不反對。
3. 需要 Tag 的,例如多媒體檔案 mp3/mkv/ape/... 這些,用 UTF-8。

沒有強迫各位一定非要用 UTF-16、UTF-8,要看使用時機。如果只是為了 UTF-8 而 UTF-8,不探討「升級的原因、理由」,只是因為「別人都在用」、「很多人都在用」,那自己也不知道要說什麼才好。

otai
2006-03-30, 08:46 PM
多謝琥珀兄的回應,原來unicode就是UTF-16 Little Endian,那麼UTF-16 Big Endian是否就是會有更多的bit呢?
如果像琥珀兄說的 "和網頁有關的,需要利用網頁應用的資料,像是 html/xml/txt,用 UTF-8 就對了" 的狀況下,有些瀏覽器(如簡體OS內的)就還是無法讀出正確的繁體中文網頁,除非是改為big5編碼.
不知此理論是否正確!

ivantw
2006-03-30, 08:54 PM
以內碼:1234h(0x1234)而言,若是Little Endian在記憶體內的存放順序為:3412,Big Endian則為1234,至於可紀錄的編碼數量皆為65536。

建議你可以"Little Endian"或"Big Endian"為關鍵字,搜尋Google,以得到更多資訊。

s900221
2006-03-30, 10:59 PM
多謝琥珀兄的回應,原來unicode就是UTF-16 Little Endian,那麼UTF-16 Big Endian是否就是會有更多的bit呢?
如果像琥珀兄說的 "和網頁有關的,需要利用網頁應用的資料,像是 html/xml/txt,用 UTF-8 就對了" 的狀況下,有些瀏覽器(如簡體OS內的)就還是無法讀出正確的繁體中文網頁,除非是改為big5編碼.
不知此理論是否正確!
little endian 和 big endian 與檔案大小無關,是指資料的 byte order 的問題,高位元組放前面或是低位元組放前面。UTF-16 同時有這兩種作法,並且會在檔案開頭放一個 Byte Order Mark 作為標示。你可以參考 wikipedia 舉的例子:
http://zh.wikipedia.org/wiki/UTF-16

對使用者而言不用太在乎是 UTF-16LE 還是 UTF-16BE,這是軟體會幫你處理好的部份。

琥珀
2006-03-30, 11:18 PM
如果有一篇文章,以英數字元為主,用傳統編碼和 UTF-8 編碼,檔案大小幾乎沒有差別。如果用 UTF-16 編碼,檔案大小會增加一倍。

顯然,對於英數字元,用 UTF-16 並非明智之舉。雖然儲存容量不是問題,但為了和世界其他國家正確交換訊息,是很划不來的。

如果有一篇文章,以中文字元為主,用傳統編碼和 UTF-8 編碼,檔案大小就有差別了。理論上通常是原本檔案大小的 1.5 倍。如果用 UTF-16 編碼,檔案大小就和傳統編碼幾乎沒有差別了。

所以,這也是為何網頁相關的應用,採用的往往都是 UTF-8 編碼,而不是 UTF-16 編碼。
當然,BOM 的問題,也是 UTF-8 被採用的一個重要理由。

otai
2006-03-31, 01:09 AM
UTF-8編碼用在中文網頁的確是和BIG5編碼檔案大小差不多,一個中文字元是一倍的英文字元大小,所以中文網頁還是用UTF-8編碼較佳.因為用BIG5編碼的狀況下限制太多了.