當前位置:編程學習大全網 - 編程軟體 - java https請求 中文亂碼問題

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處理中文亂碼最多的場景就是文件下載時中文文件名亂碼。

  • 上一篇:火焰鳥的漫畫中
  • 下一篇:動力節點java培訓需要多長時間?
  • copyright 2024編程學習大全網