https://localhost:8080/data.json。server.xml 配置 URIEncoding="UTF-8" 並重啟 Tomcat,無效。URIEncoding 只影響 請求參數解碼(GET 參數、POST 表單),不影響靜態文件內容編碼。瀏覽器直接請求靜態 .json 文件時,Tomcat 以文件字節流原樣輸出,響應頭 Content-Type: application/json;charset=ISO-8859-1(默認),導致瀏覽器按錯誤編碼渲染。
編碼 → 轉為 UTF-8 編碼(不要選「UTF-8-BOM」)。Save with Encoding → UTF-8。在 web.xml (Tomcat 全局或項目) 添加:
<mime-mapping>
<extension>json</extension>
<mime-type>application/json;charset=UTF-8</mime-type>
</mime-mapping>
重啟 Tomcat,響應頭變為 Content-Type: application/json;charset=UTF-8,瀏覽器自動正確解碼。
@GetMapping("/data.json")
public ResponseEntity getJson() throws IOException {
String content = new String(Files.readAllBytes(Paths.get("data.json")), StandardCharsets.UTF_8);
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType("application/json;charset=UTF-8"))
.body(content);
}
https://localhost:8080/data.json 確認 Content-Type 含 charset=UTF-8。文件編碼 ≠ 傳輸編碼。請確保「文件存盤為 UTF-8」+「響應頭聲明 UTF-8」雙重保障。