java http 給 c++傳送json資料中文亂碼問題
阿新 • • 發佈:2019-01-09
首先感謝 http://blog.csdn.net/amazingrace/article/details/8794088
說重點:
專案:
伺服器c++,使用多語言字符集,預設GBK,直接用socket處理網路連線,自行解析http訊息(訊息真的很少,工作量不大),
客戶端java,使用http,訊息格式用json。
問題:
客戶端上傳資料給伺服器,訊息中有中文,伺服器接收資料,並記錄下來,然而,每次伺服器收到的資料,都是“????”一堆問號。
解決過程:
說起來簡單,可實際解決起來,卻花了不少時間,因為做客戶端的程式不熟悉c++,做伺服器的程式不熟悉java,好吧,很無奈!!
1、上網查,大多說是編碼問題,說java轉碼就好了name=new String(name.getBytes("ISO-8859-1"),"GBK");實際測試,伺服器接收到的還是亂碼。
2、伺服器進行解碼,java預設使用unicode,所以在伺服器使用unicode解碼,結果還是亂碼。然後客戶端再使用UTF8,伺服器使用UTF8解碼,還是亂碼。
3、各種編碼格式測試,結果還是沒辦法接收到正確的內容。
4、伺服器把接收到的資料用十六進位制格式按位元組輸出,發現輸出的結果也不正常,不是想要的資料,因為時間較緊張,所以沒有再仔細分析了。
5、最後找到上面那個部落格,發現還需要單獨對json資料進行編碼!!!修改後測試結果正常!伺服器接收到的資料直接輸出到一個檔案就可以了。
這就是一個不懂java的人遇到的一個悲劇!