什麼是BOM(Byte-order mark)? - 程式隨筆

文章推薦指數: 80 %
投票人數:10人

位元組順序記號(英語:byte-order mark,BOM)是位於碼點 U+FEFF 的統一碼字元的名稱。

當以UTF-16或UTF-32來將UCS/統一碼字元所組成的字串編碼時, ... 0% 最近開發了一支收集資訊然後將資料轉成Json檔案給其它單位讀取,但收到對口單位回報Json格式不正確。

但我將檔案內容貼到線上的Json解析網站,或是自己肉眼判斷都覺得格式沒問題,所以執行了一次對方的解析程式,錯誤訊息如下。

在字串0的位置有錯誤 打開我提供的檔案,字串0也就是最前面感覺很正常… 接著我將這段錯誤訊息貼Notepad++,轉成Hex碼來看看究竟是藏了什麼東西 #什麼是BOM把efbbbf拿去Google最後查到了Wiki-位元組順序記號 節錄Wiki位元組順序記號(英語:byte-ordermark,BOM)是位於碼點U+FEFF的統一碼字元的名稱。

當以UTF-16或UTF-32來將UCS/統一碼字元所組成的字串編碼時,這個字元被用來標示其位元組序。

它常被用來當做標示檔案是以UTF-8、UTF-16或UTF-32編碼的記號。

#解法而會塞入位元組序是因為在寫檔案時這樣指定編碼 123456using(StreamWriterfile=newStreamWriter( newFileStream(path,FileMode.OpenOrCreate,FileAccess.Write),Encoding.UTF8)){ .....} 只要將寫改改成newUTF8Encoding(false)即可 123456using(StreamWriterfile=newStreamWriter(newFileStream(path,FileMode.OpenOrCreate,FileAccess.Write),newUTF8Encoding(false))){.....} TableofContents Overview 1.#什麼是BOM2.#解法 Toyo 202 posts 6 categories 74 tags



請為這篇文章評分?