java和vb進行socket通訊以及java與c/c++/oc 進行socket通訊時漢字字串編碼問題解決

來源:互聯網
上載者:User

java和vb進行socket 以及java與c/c++/oc 進行socket通訊時漢字字串編碼問題解決

我遇到的是 java 編碼字元集採用 UTF-8 編碼字元採用2+字元 我測試的代碼如下

System.out.println("UTF-8:a->" + "a".getBytes("UTF-8").length); System.out.println("UTF-8:嗨->" + "嗨".getBytes("UTF-8").length); System.out.println("GB2312:a->" + "a".getBytes("GB2312").length); System.out.println("GB2312:嗨->" + "嗨".getBytes("GB2312").length); System.out.println("Unicode:a->" + "a".getBytes("Unicode").length); System.out.println("Unicode:嗨->" + "嗨".getBytes("Unicode").length); //測試結果//UTF-8:a->1//UTF-8:嗨->3//GB2312:a->1//GB2312:嗨->2//Unicode:a->4//Unicode:嗨->4

 

 

再者,如果採用 socket 通過位元組形式傳遞也會出現問題,仔細研究過 java 和 c、c++、vb、oc 等等的都知道(ps:我只知道這些語言但是有的不會,不過好多語言都是根據c演變而來,嘻嘻說笑)

java byte範圍是 -127-128 ;而c、c++、vb、oc 等為0-255 所以這樣就會出現問題

所以想到的就是最最簡單通用的辦法,也免得走很多彎路了,什麼高位轉低位了,地位轉高位這個不行,那叫一個哭呀(沒有發現這個之前,我可嘗到了不少苦頭,在此記錄分享一下)不多說了

言歸正傳:在做android之前我是做javaEE java web的 所以對 web也比較熟悉 有一個URLDecoder,就試著用這個URL編碼格式進行轉換 ,那個夢中人呀!!終於通了

java  URLDecoder、URLEncoder URL編碼及解碼 java 代碼如下

// 發送socket資料,進行寫出dos = new DataOutputStream(mSocket.getOutputStream());//dos.writeUTF(s.trim() + "\n");dos.write(URLEncoder.encode(s, "GB2312").getBytes());dos.flush();// 接收socketmSocket.getInputStream().read(receive);String ss = new String(receive);//ss =ss.substring(0, ss.lastIndexOf("%02"));String data = URLDecoder.decode(ss, "GB2312");System.out.println(data);

 

c、c++、vb、oc 我對這些非專業的就不進行貼代碼了 具體可以google一下吧 應該也有 unicode 的URL decode及encode編碼反正我這邊對vb進行通訊就用這種方法弄通的

如果有好的方法,可以提出來分享一下喲 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.