理解計算機中的編碼問題

小生博客:http://xsboke.blog.51cto.com

                    -------謝謝您的參考,如有疑問,歡迎交流

相信計算機系統編碼問題,讓很多人都頭疼,而且大家經常因爲編碼問題而出現各種各樣的煩惱,那麼我也一樣,在這裏,我將自己的理解寫出來,大家可以參考參考,如果有異議的地方,大家也可以交流一下.

要解決一件事,首先要知道他的今生來世,我們現在就看看關於計算機編碼的今生來世

一、編碼最初的形態,以及出現的問題和原因.

# 最初的形態
因爲語言問題,最初每個幾乎每個國家都有自己的編碼比如:
    美國:ASCII 佔1個字節,只支持英文
    中國:GB2312 佔2個字節,支持6700+漢字
    中國:GBK GB2312的升級版,支持21000+漢字
    日本:Shift-JIS 日本字符
    韓國:ks_c_5601-1987 韓國編碼
    泰國:TIS-620 泰國編碼

# 產生的問題
這樣就產生侷限性了,比如你中國的windows系統默認是GBK編碼,你在text寫了一個"你好",然後把這個text傳給了在美國的朋友,
你美國的朋友用美國的計算機打開這個text就會顯示亂碼.

# 問題產生的原因
原因:硬盤裏面存儲的都是二進制數0101010101111000類似這種,所以你以什麼編碼寫到硬盤的,讀的時候就得用什麼編碼讀.

二、解決編碼最初產生的問題.

這時候就出現了萬國碼unicode,但是因爲unicode涵蓋了幾乎全球所有的文字和二進制的對應關係,所以使用unicode表示一個字符時,
會佔用更多的空間,例如:利用unicode表示"gbk"需要6個字節才能表示,比原來ASCII表示增加了1倍,
爲了解決這個問題,出現了Unicode Transformation Format,學術名UTF:
        1.   UTF-8: 使用1、2、3、4個字節表示所有字符;優先使用1個字符、無法滿足則使增加一個字節,最多4個         2.   字節。英文佔1個字節、歐洲語系佔2個、東亞佔3個,其它及特殊字符佔4個
        3.   UTF-16: 使用2、4個字節表示所有字符;優先使用2個字節,否則使用4個字節表示。
        4.   UTF-32: 使用4個字節表示所有字符;

三、關於轉碼問題.

由於歷史原因,各個國家依然在大量使用自己的編碼,這時候因爲有了utf,所以我們可以通過編碼轉換完成語言的正常顯示,
一個對應關係,讓你更好的理解編碼轉換:

1. 讓以GBK編碼的數據在韓國windows系統中正常顯示
         中國編碼GBK    ->    decode解碼爲unicode    ->    encode編碼成韓國編碼

2. 讓以韓國編碼的數據在中國windows系統中正常顯示
         韓國編碼    ->    decode解碼爲unicode    ->    encode編碼成GBK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章