Http響應亂碼


Http響應亂碼

方案1

response.setHeader("Content-Type", "application/json");
response.setCharacterEncoding("GBK");
//Content-Type: application/json;charset=GBK
//{code: "401", message: "未登錄"}

方案2

response.setHeader("Content-Type", "application/json;charset=UTF-8");
//{code: "401", message: "未登錄"}
//Content-Type: application/json;charset=UTF-8

注意

只設置Content-Type不帶編碼信息無效

/*
只設置Content-Type,沒有帶編碼信息,String中的中文是UTF16編碼的。tomcat以其默認的ISO-8859-1從String中獲取字節。tomcat附加在Content-Type的編碼是charset=ISO-8859-1,瀏覽器會以這個編碼解碼,但是得不到原始中文信息。
*/
response.setHeader("Content-Type", "application/json");
//{code: "401", message: "???"}
//Content-Type: application/json;charset=ISO-8859-1

只設置response.setCharacterEncoding("GBK"),知識tomcat以GBK編碼從String對象中獲取字節。但是此時沒有Content-Type信息。也就是瀏覽器將會用默認的類型和編碼解析響應。不一致也會出現亂碼。

//tomcat將字符串按GBK編碼轉為字節,但是瀏覽器收到字節后,按照默認編碼解析將會亂碼。
response.setCharacterEncoding("GBK");
//{"code":"401","message":"δ��¼"}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM