close

當我們瞭解 網頁設計 的原始碼檔案編碼,並正確告知編譯器與直譯器,只是第一步,接下來,得瞭解 程式設計 的運行時採用通用字元集(UCS)或字元集獨立處理。

以Java為例,其採用通用字元集處理方式,執行時期字元的內部編碼(Internal Encoding)固定採用UTF-16 Big Endian,每個字元實際都是兩個位元組,字元不會有其他編碼資訊。

由於外部字元資料的編碼,可能與內部編碼不一致,採通用字元集的程式,都會提供編碼轉換方法,例如Java的String提供 getBytes(),可將代表字元UTF-16編碼的位元組,轉換為指定編碼的位元組,使用Reader、Writer等類別處理字元輸入輸出時,也可 指定外部編碼(External Encoding)資訊,將字元的位元組正確讀入,並轉換為UTF-16,或將UTF-16正確轉換為目的地編碼的位元組。

為了簡化通用字元集編碼轉換問題,這類程式執行時期通常可指定預設外部編碼,例如,Java執行時,可指定系統屬性file.encoding,作為String的getBytes()方法,或FileReader、FileWriter等API預設的外部編碼轉換依據。

採字元集獨立方式處理,沒有外部與內部編碼轉換問題,字元集獨立方式下,字元在程式執行時只是原始的位元組集合。

例如Ruby 1.8採字元集獨立方式,程式設計的原始碼若使用UTF-8撰寫的中文字元佔了三個位元組,那在程式運行時也是佔3個位元組,原始碼若使用Big5撰寫中文字元,在程式運行時就是佔2個位元組。

雖然沒有外部與內部編碼轉換問題,但實際上字元只是原始位元組集合,要完成計算字元長度或使用規則表示式(Regular expression)處理時較麻煩。

Ruby 1.9也採字元集獨立方式,但允許指定預設內部編碼與外部編碼,在讀取或寫入外部資料時,若沒有額外指定編碼,會使用預設內部編碼與外部編碼作為轉換依據,不過字串也允許擁有個別編碼資訊,而不一定要採用內部編碼。

雖然採字元集獨立方式,不過Ruby 1.9加強了編碼轉換API,像是透過字串取得長度時,傳回的是字元長度而不是位元組長度,編碼轉換也可以透過encode()等方法來完成。

 


轉貼來源:iThome online

http://www.piece2ec.com.tw/news.asp?ID=1069


參考文獻:

1.陳會安,2002,Java2 程式設計範例教本,台北:學貫行銷股份有限公司。

2.黃中杰,2002,JAVA 與XML 技術手冊,台北:碁峰資訊股份有限公司。

3.楊宗誌,2002,JBuildert 程式設計實務,台北:文魁資訊股份有限公司。








 包裝設計

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 巨群資訊 的頭像
    巨群資訊

    巨群資訊

    巨群資訊 發表在 痞客邦 留言(0) 人氣()