2015年6月30日 星期二

證明unicode和UTF-8各佔幾Byte

首先創建三個文字文件,可以另存新檔選編碼

如下是結果圖,分別是ANSI.txt、Unicode.txt、UTF-8.txt

這三個檔裡面都是空的,分別按右鍵內容看一下大小(不是磁碟大小),磁碟大小是電腦一存就是4k的意思,選檔案系統時決定的,這時會看到三個檔案的大小不同,如上圖是Unicode.txt的大小。
第一次-->三個檔案都打一個ASCII code有的字,然後存檔看一下大小的變化,不要按到空白或Enter
第二次-->三個檔案都打一個中文字,然後存檔看一下大小的變化

這時就可以整理出一張表,注意要扣掉空白檔案的大小:
                ANSI        Unicode(UTF-16)        UTF-8
空檔          0B               2B                              3B
ASCII       1B                2B                              1B
中文         2B             2B、4B                      3B~6B

ANSI就是系統編碼,像我是Big5,看你用什麼地區安裝的會不一樣

unicode 就是 unicode16LE,也就是 UTF-16LE
UTF 是 Unicode Transfor Format,UTF-8、UTF-16、UTF-32 是對 Unicode 的轉換,因為以上面整理出的表會發現美國人大部分都是用英文 (ASCII),用了 Unicode 後,容量增大一倍,這時用 UTF-8 就會和原來是一樣的,而且還支援其他國家的符號

UTF-8 有1~6 Byte,如「𠃡𠃢𠃣𠃤𠃥𠃦」在 UTF-8 都是 4Byte,輸入法應該是打不出來,但可以複製, java 和 javascript 都只支援到 4Byte,都是到 unicode 的 10FFFF,可看我的這一篇文章比較詳細
可在 cmd 打 chcp (change code page),微軟文件維基

437          ASCII
936          GBK
950          Big5
65000 UTF-7
65001 UTF-8

可以改,但只會在當前的 cmd 生效,不會影響預設值,想改預設值要改機碼



沒有留言:

張貼留言