<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0

            最近在嘗試使用ActiveMQ做系統(tǒng)間的繼承,當(dāng)然少不了Java和C++客戶端的交互問(wèn)題。由于Java與C++在字符串上采用了不同方式的編碼 (Java-Unicode, C++ - ascii)造成了文本數(shù)據(jù)傳輸過(guò)程中的編碼問(wèn)題, 下面記錄一下解決方

    環(huán)境:

    C++ 端:

    操作系統(tǒng):         Win7

    JMS客戶端:     CMS 1.0 (新版本的CMS需要VS2008編譯)

    開(kāi)發(fā)環(huán)境:         VS2005

              Java端:

                       操作系統(tǒng):          WinXp

                       JMS客戶端:       ActiveMQ5.4.1-Core

                       開(kāi)發(fā)環(huán)境:           JDK1.6.22

              ActiveMQ:

                       ActiveMQ 5.4.1


    解決方法:

            根據(jù)JMS API對(duì)Message類別的定義,最適合多語(yǔ)言見(jiàn)交互的Message類型應(yīng)該是BytesMessage和TextMessage。由于 BytesMessage的readUTF方法在CMS1.0中,接收J(rèn)ava端發(fā)出的UTF字符時(shí)會(huì)拋出異常,導(dǎo)致BytesMessage不好使用;壞賬

            TextMessage中,無(wú)論C++端以哪種格式的數(shù)據(jù)setText() , Java端接收到的數(shù)據(jù)都是以ISO-8859-1 格式編碼的字符。所以統(tǒng)一在發(fā)送和接收時(shí)都采用 ISO-8859-1 的方式進(jìn)行數(shù)據(jù)傳輸

    發(fā)送時(shí)的代碼:

        private void writeTextMessage(String txt) {
            try {
                String msg = txt;        
                            
                String iso = new String(txt.getBytes("GBK"), "ISO-8859-1");
                
                TextMessage message = pubSession.createTextMessage();
                message.setStringProperty("language", "java");
                message.setText(iso);
                
                pub.publish(message);
                
            } catch (JMSException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }

    接收時(shí)的代碼:

        private void onTextMessage(TextMessage message) throws JMSException {
            String txt = message.getText();
            
            try {
                String gbk = new String(txt.getBytes("ISO-8859-1"), "GBK");
                System.out.println(gbk);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }

    posted on 2011-05-06 10:15 墻頭草 閱讀(6161) 評(píng)論(5)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開(kāi)發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 免费国产怡红院在线观看| 亚洲三级高清免费| 国产啪亚洲国产精品无码| 亚洲av日韩aⅴ无码色老头| 女人张腿给男人桶视频免费版| 亚洲人成777在线播放| 在人线av无码免费高潮喷水| 亚洲乱码中文论理电影| 成年女人男人免费视频播放| 2020国产精品亚洲综合网| 久久精品免费一区二区喷潮| 亚洲影院天堂中文av色| 国产精品无码免费视频二三区| 亚洲第一成年免费网站| 亚洲第一区精品日韩在线播放| 中美日韩在线网免费毛片视频| 在线亚洲精品自拍| 精品国产免费一区二区三区香蕉| 久久精品国产亚洲夜色AV网站| 免费无码又爽又刺激高潮视频 | 国产99视频精品免费视频7| 久久人午夜亚洲精品无码区| 免费无遮挡无码永久在线观看视频| 全黄A免费一级毛片| 亚洲国产三级在线观看| 在线看片v免费观看视频777| 亚洲av无码专区在线观看下载| 免费在线观看你懂的| 99在线免费观看| 亚洲激情视频图片| 一级毛片直播亚洲| 4399影视免费观看高清直播| 亚洲综合一区二区三区四区五区 | 巨胸喷奶水www永久免费| 亚洲黄色一级毛片| 国产猛烈高潮尖叫视频免费| www在线观看免费视频| 亚洲欧洲日本天天堂在线观看| 永久免费bbbbbb视频| 国产免费阿v精品视频网址| 丁香婷婷亚洲六月综合色|