在我們通常使用的windows系統中,我發現了一個有趣的現象。我新建一個空的文本文檔,點擊文件-另存爲-編碼選擇UTF-8,然後保存。此時這個文件明明是空的,卻佔了3字節大小。原因在於:此時保存的編碼方式自動會變爲UTF-8 BOM
一、一個漢字在不同的編碼方式中佔多少字節?
1.在UTF-8中,一個漢字佔3個字節(一個字符佔一個字節)
2.在ASCII碼中,一個漢字佔2個字節(一個字符佔一個字節)
3.在Unicode編碼中,一個漢字佔2個字節(一個字符同樣佔兩個字節,所以JAVA中char a = '中';是可以的)
二、UTF-8與UTF-8 BOM
BOM即byte order mark,具體含義可百度百科或維基百科,UTF-8文件中放置BOM主要是微軟的習慣,但是放在別的系統上會出現問題。
不含BOM的UTF-8纔是標準形式,UTF-8不需要BOM
帶BOM的UTF-8文件的開頭會有U+FEFF,所以我新建的空文件會有3字節的大小。
三、創建UTF-8(而非UTF-8 BOM)文件的方法
在發現文件另存爲UTF-8缺得到UTF-8 BOM文件後,我們怎樣才能得到UTF-8呢?
法1.先另存爲UTF-8保存,再使用notepad++打開,把裏面的編碼設置爲無BOM的UTF-8然後保存。(此方法治標不治本,因爲當你再次在裏面寫漢字時,文件會自動變成UTF-8 BOM)
法2.用JAVA代碼
如圖,可以很輕鬆的創建UTF-8文件,且可以隨便寫漢字,文件字節數=漢字數*3