⑴ 如何解決JSON返回的中文亂碼
【 解決方法】:
@RequestMapping(value="/getphone",proces = "text/plain;charset=utf-8")
/**輸入手機號碼後判斷手機號是否存在*/
@RequestMapping(value="/getphone",proces = "text/plain;charset=utf-8")
@ResponseBody
public String getphone(String phone,HttpSession session){
Users u=service.selectPhoneService(phone);
if(u==null){//如果為空,則需要注冊
String str="請您先注冊,再登錄。";
session.setAttribute("str", str);
return "請您先注冊,再登錄。";
}
return "true";
⑵ java web中response.setContentType("application/json;charset=utf-8")什麼意思
response.setContentType(MIME)的作用是使客戶端瀏覽器,區分不同種類的數據,並根據不同的MIME調用瀏覽器內不同的程序嵌入模塊來處理相應的數據。
你要ajax輸出給客戶端的話你用json-lib就是: response.setContentType("application/json;charset=utf-8")。
在上傳文件後,會返回response,header中的content-type為*/*,這樣設置,通常會導致客戶端(瀏覽器)不能識別內容編碼,如果客戶端(瀏覽器)採用非UTF-8方式(比如gbk)解碼,客戶端就會產生亂碼問題。
⑶ java https請求 中文亂碼問題
嘗試的方法:
1. 在服務端接收到參數時,utf-8轉gbk,無效。
2. 在服務端接收到參數時,iso-8859-1轉gbk,無效。
3. 在發送請求前將中文參數轉碼,utf-8轉iso-8859-1,無效。代碼如下:
new String(remark.getBytes(「UTF-8」), 「ISO-8859-1」)
4. 在請求端,HttpHeader設定ContentType為「application/json;UTF-8」,無效。代碼如下:
headers.setContentType(Media.valueOf(「application/json;UTF-8」));
寫到這里,有人應該感覺到這有點「病急亂投醫」的感覺了,沒有頭緒地在試著各種方式。是的,起初我覺得是請求header中採用了ISO-8859-1的編碼,但嘗試後很顯然不是;後來我覺著是否是RestTemplate中採用的HttpMessageConverter方式所決定的,但沒能找到很好的證明方式,查資料說的是StringHttpMessageConverter默認採用的是ISO-8859-1編碼,可我覺得我指定了ContentType為application/json,RestTemplate不應該去調用StringHttpMessageConverter啊,其中的原理還有待深究。個人感覺這種情況出問題的可能性最大。
最後,在網上看到一篇文章後,看了一種建議方式,並且是可行的,就是使用URLEncode,將中文參數在傳參前進行encode.這里以GBK編碼是為了在伺服器端接收參數後無需再轉碼了,如下:
list.add(URLEncode.encode(name, 「GBK」));
URLEncode方式可以解決這種特定場景的中文亂碼問題,相信理解其原理後還可以運用到更多的場景。目前我在網上看到的,關於用URLEncode處理中文亂碼最多的場景就是文件下載時中文文件名亂碼。
⑷ jsp頁面之間傳遞JSON中文亂碼
這樣只改這里肯定會中文亂碼,用js提交數遲襪帶據的,要在tomcat配置文件碼蘆 server.xml加如下的配置
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" />
主要好桐加了
URIEncoding="utf-8"
重啟tomcat
如果還不行,你就轉碼了,轉成%55%ss這樣的數據類型,會轉吧?接收完成再轉回來這變成中文了,這是萬能的,不會再亂碼的