1. 程式人生 > >java http 給 c++傳送json資料中文亂碼問題

java http 給 c++傳送json資料中文亂碼問題

首先感謝 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的人遇到的一個悲劇!