記錄一次httpClient調(diào)用接口在不同的環(huán)境下中文變“?”亂碼

最近在寫一個短信服務,很簡單就是調(diào)用移動的能力開發(fā)平臺的接口實現(xiàn)發(fā)送短信和狀態(tài)查詢;

本人開發(fā)用的是mac下 IDEA,在本地測試跑起來沒有問題,但是把class文件拷貝到window環(huán)境的tomcat下結(jié)果出現(xiàn)了對移動請求的參數(shù)中文變?的亂碼(其實是一部分)情況;代碼如下:




? ? ? ? 然后就開始了網(wǎng)上找答案的過程;

? ? ? ? 我當時第一反應是代碼肯定沒錯,因為我本地跑起來并沒有問題;然后就開始找環(huán)境的問題,那肯定是tomcat問題,順著這個思路,開始查tomcat中文亂碼問題,修改了server.xml的配置;參考鏈接:tomcat中文鏈接問題;發(fā)現(xiàn)怎么改都不起作用,失敗了;

(原因是我這的亂碼其實并不涉及前后臺的數(shù)據(jù)傳遞)

? ? 接著想辦法,我mac這邊是打包成class文件,然后放入的tomcat環(huán)境,那是不是不同的JRE對class文件解析不一致造成的?試一試。找到了文章:Java HttpClient Post請求發(fā)送數(shù)據(jù)亂碼;

當時我一看這文章就覺得找到了解決方案,修改了? $TOMCAT_HOME/bin/catalina.bat 文件,果然成功了;

(思路還是錯了,class文件是unicode編碼的,servlet傳給移動的接口的數(shù)據(jù)也是unicode編碼的,然后由httpclient處理對數(shù)據(jù)按照utf8編碼,只要我傳出去數(shù)據(jù)正確,移動那邊服務器設(shè)置utf8編碼接收,應該是沒問題);

? ? ? ? 這時出現(xiàn)了一個新的問題cmd窗體下的的tomcat下console出現(xiàn)了亂碼問題,原因是因為window默認的編碼是GBK而我的日志輸出是utf8的,華麗麗的亂碼了,還好log日志不亂碼(編輯器會解析),先上線將就用吧;參考文章:tomcat亂碼問題;

問題到這其實是最大的,個人認為解決了,通過cmd 注冊表的編碼修改也可以實現(xiàn)console不亂碼,沒有深究下去

? ? 項目上線,安裝到了客戶那里,客戶一看這cmd怎么亂七八糟,不行,一定要求解決;

沒辦法,再想辦法解決,靜下心來去仔細梳理思路,一步步debug打日志去看啥時候出現(xiàn)了亂碼,是否是數(shù)據(jù)庫中取出來是亂碼,然后終于發(fā)現(xiàn)了問題,我在對數(shù)據(jù)庫取出的參數(shù)操作時,加了一句轉(zhuǎn)碼new String(xx,“utf-8”),我的mac IDEA設(shè)置的是utf-8環(huán)境jdk,該參數(shù)由utf8編碼,utf8解碼,運行后生成unicode數(shù)據(jù),然后由httpClient工具類進行url編碼,沒啥問題;換到了GBK環(huán)境下,那參數(shù)轉(zhuǎn)成了utf8編碼,在GBK下就是亂碼了,亂碼以后再生成unicode編碼再utf8編碼都是亂碼了;


? ? ? 最后除去這轉(zhuǎn)碼的代碼,跨平臺不同jdk也可以使用了;

小白一枚,理解上如有問題,還請大神指出;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 編碼問題一直困擾著開發(fā)人員,尤其在 Java 中更加明顯,因為 Java 是跨平臺語言,不同平臺之間編碼之間的切換...
    x360閱讀 2,584評論 1 20
  • 主要內(nèi)容 1. 字符編碼理論簡述 本文主要是圍繞Web開發(fā)中涉及到的中文編碼這一常見問題展開,包括了對字符編碼基礎(chǔ)...
    topgunviper閱讀 14,030評論 5 28
  • 那是過去無盡的掙扎后的淚水 肆意而沒有約束的流淌 不再是委屈與悔恨的吐露 雖然只是短短數(shù)日 在泥濘的操場上鍛煉出永...
    愛寫詩的小胖閱讀 197評論 0 0
  • Markdown標題是我的大愛 二級標題 三級標題 四級標題 #就代表標題級數(shù)(從1#到6#分別代表不同級的標題)...
    高高高高高高翔閱讀 289評論 0 1
  • 有些東西不反復的聽,不反復的念叨,不反復的死磕,真的不能牢牢的印在腦子里。 今天開始復讀幾個感念,做為自己、自己、...
    達尕閱讀 369評論 0 1

友情鏈接更多精彩內(nèi)容