最近開發了一支收集資訊然後將資料轉成Json檔案給其它單位讀取,但收到對口單位回報Json格式不正確。但我將檔案內容貼到線上的Json解析網站,或是自己肉眼判斷都覺得格式沒問題,所以執行了一次對方的解析程式,錯誤訊息如下。
在字串0的位置有錯誤
打開我提供的檔案,字串0也就是最前面感覺很正常…
接著我將這段錯誤訊息貼Notepad++,轉成Hex碼來看看究竟是藏了什麼東西
#什麼是BOM
把ef bb bf拿去Google最後查到了Wiki-位元組順序記號
節錄Wiki
位元組順序記號(英語:byte-order mark,BOM)是位於碼點U+FEFF
的統一碼字元的名稱。當以UTF-16或UTF-32來將UCS/統一碼字元所組成的字串編碼時,這個字元被用來標示其位元組序。它常被用來當做標示檔案是以UTF-8、UTF-16或UTF-32編碼的記號。
#解法
而會塞入位元組序是因為在寫檔案時這樣指定編碼
1 | using (StreamWriter file = new StreamWriter( |
只要將寫改改成 new UTF8Encoding(false) 即可
1 | using (StreamWriter file = new StreamWriter( |