UTF-8與UTF-8 BOM

在我們通常使用的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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章