1. 程式人生 > >有關於【該檔案的字元編碼需要在傳輸協議層宣告,或者在檔案中加入一個 BOM(位元組順序標記)】的另一種解決辦法

有關於【該檔案的字元編碼需要在傳輸協議層宣告,或者在檔案中加入一個 BOM(位元組順序標記)】的另一種解決辦法

昨天測試一個介面的時候發現一個異常,瀏覽器訪問一個controller,然後帶了一個JSON格式的引數,然後瀏覽器返回400錯誤,除錯發現下面的錯誤資訊:

純文字檔案的字元編碼未宣告。如果該檔案包含 US-ASCII 範圍之外的字元,該檔案將在某些瀏覽器配置中呈現為亂碼。該檔案的字元編碼需要在傳輸協議層宣告,或者在檔案中加入一個 BOM(位元組順序標記)。

很納悶,這個服務的部署環境是window10系統,之前在centos7測試是沒有這樣的問題。

搜尋發現都是說在訪問頁面的開頭加上下面的語句:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang = "zh-CN">


並在<head>下面加上下面的語句:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
...
...
...
</head>
但實際上我是直接通過瀏覽器訪問,無法新增任何有關字元編碼等申明的。後來有同事提醒說在使用GET傳輸JSON格式的‘{}’【大括號】應該會被瀏覽器攔截,需要轉義。恍然大悟,於是把 {} 去除完全可以訪問,問題定位了。

最後的解決辦法是把 {} 轉義成 %7B%7D 即解決上述問題。