用Indy組件中的TIdTCPClient組件向java的服務(wù)器端傳遞文本,一直有亂碼問題。今天解決了。
我的開發(fā)環(huán)境是c++ builder 2009,indy 10。
c++的客戶端程序代碼大致如下:
??? if(!IdTCPClient1->Connected()){
??????? IdTCPClient1->Connect();
??? }
??? IdTCPClient1->IOHandler->WriteLn(”漢字123abcd”,enUTF8);
??? IdTCPClient1->Disconnect();
java服務(wù)端的代碼大致如下:
??? ServerSocket ss = new ServerSocket(1900);
??? Socket s = ss.accept();
??? InputStream is = s.getInputStream();
??? BufferedReader in = new BufferedReader(new InputStreamReader(is,Charset.forName(”UTF-8″)));
??? String line = “”;
??? while ((line = in.readLine()) != null) {
??????? System.out.println(line.toString());
??? }
??? is.close();
??? in.close();
??? s.close();
??? ss.close();
評(píng)論
我在進(jìn)行indy10.5.7這個(gè)版本進(jìn)行idTCPClient及idTCPServer進(jìn)行編程時(shí)同樣漢字收發(fā)時(shí)會(huì)產(chǎn)生亂碼,我在單元的里引用了 HTTPApp 單元,
在發(fā)的時(shí)候這樣寫IdTCPClient.IOHandler.WriteLn(HTTPEncode(edtMsg.Text));
在收的時(shí)候這樣寫HTTPDecode(IdTCPClient.IOHandler.ReadLn); 就可以用漢字進(jìn)行通訊了 回復(fù) 更多評(píng)論
在發(fā)的時(shí)候這樣寫IdTCPClient.IOHandler.WriteLn(HTTPEncode(edtMsg.Text));
在收的時(shí)候這樣寫HTTPDecode(IdTCPClient.IOHandler.ReadLn); 就可以用漢字進(jìn)行通訊了 回復(fù) 更多評(píng)論
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||