Posted on 2010-12-17 10:50
kangaroo 閱讀(1235)
評論(0) 編輯 收藏 所屬分類:
programmer
ASCII是最初的計算機指定的一套符號編碼,使用一個字節其中的7位,128個數值代表不同字符,對于英語這個已經是足夠,
但是對于其他國家的語言,卻遠遠不夠,如漢語,日語,韓語,所以就出現了非ASCII的字符編碼,如gbk2312,gbk的漢字編碼。這些非ascii的編碼都是兼容ascii128個符號編碼的。
------------------------------------------------------------------------------------------------------------------------------------------------------
UNICODE首先只是一個字符集,它的出現就是因為各個國家出臺自己的語言編碼,為了統一這些所有語言,可以理解unicode是涵蓋各個國家字符的集合,現在的規模可以容納100多萬個符號。需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內部是使用unicode編碼來處理的,比如java。
unicode只是一個符號集,只規定了符號的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲,即編碼方式,常見的有utf-8和utf-16。
(如果unicode規定,每個符號用三個字節表示,那么英文字母只占用一個字節,就浪費很多存儲空間。)
UTF-8就是一種變長的編碼方式,它使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。
我們常用的記事本功能,在"save as"的時候,可以選擇不同的編碼方式,里面有四個選擇:ansi,unicode,unicode big endian,utf-8:
1.ANSI是默認的編碼方式。對于英文文件是ASCII編碼,對于簡體中文文件是GB2312編碼(只針對Windows簡體中文版,如果是繁體中文版會采用Big5碼)。
2.Unicode編碼指的是UCS-2編碼方式,即直接用兩個字節存入字符的Unicode碼。這個選項用的little endian格式。
3.Unicode big endian編碼與上一個選項相對應。我在下一節會解釋little endian和big endian的涵義。
4.UTF-8編碼,也就是上一節談到的編碼方法。
參考:
http://www.cnblogs.com/pony/archive/2009/02/05/1384323.html
http://blog.chinaunix.net/u1/56156/showart_2245355.html
http://liaoshaoyao.javaeye.com/blog/667056