解決 API 回應中的 BOM (Byte-Order Mark) 字元問題
問題背景 最近在開發過程中遇到一個詭異的問題:呼叫某個 API 後,某個常數 name 的值居然是 nil,但從 raw data 看起來明明有值。 症狀檢查清單: ✅ Console 印出 raw data 看起來正常 ✅ jsonDecode 解碼成功 ✅ Enum 對應的 JSON key (_Name_Ch) 完全相同 ✅ 瀏覽器中直接訪問 API,name 確實有值 ❌ Swift 中取得的 name 卻是 nil 經過反覆檢查,終於發現問題根源:不可見的 BOM (Byte-Order Mark) 字元。 什麼是 BOM? BOM (Byte-Order Mark),中文稱為位元組順序記號,是一個不可見的 Unicode 字元,用於標示文字檔的編碼位元組順序。 常見的 BOM 字元: UTF-8 BOM: 0xEF 0xBB 0xBF (Unicode: U+FEFF) UTF-16 BE BOM: 0xFE 0xFF UTF-16 LE BOM: 0xFF 0xFE 問題診斷 根據問題分析,name 為 nil 的原因是: ...