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

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

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

    konhon

    忘掉過去,展望未來。找回自我,超越自我。
    逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

    Google

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

    Java的中文問題通常會困擾很多開發(fā)者,你可能在開發(fā)Web應(yīng)用程序的時候遇到中文參數(shù)的傳遞問題,最后你可能選擇使用Filter把Request的編碼方式設(shè)置為GBK來解決。在J2ME的開發(fā)中我們同樣會遇到中文問題,比如在RMS中存儲中文、網(wǎng)絡(luò)傳輸中傳輸中文、從文件中讀取中文等問題。

        我們在解決中文問題的時候,用到的最多的一個詞就是UTF-8。我們知道ASCII碼是單字節(jié)編碼方式,可以解決英文的問題,但是中文的字庫非常龐大,用ASSII碼就難以解決了。Java語言是支持UNICODE編碼方式的,UNICODE是雙字節(jié)的編碼方式可以支持中文字庫,但是這多少帶來一些浪費,因為并不是所有的字符串都是非英文字符的。UTF-8編碼方式正好可以解決這個問題,只有當(dāng)字符不是ASSII碼的時候他采用雙字節(jié)來表示,這樣就節(jié)省了空間。這里我只總結(jié)了三種J2ME常見的中文問題。


    網(wǎng)絡(luò)傳輸中的中文問題
        解決這個問題的關(guān)鍵是我們不采用InputStream或者OutputStream提供的方法按照字節(jié)來傳遞數(shù)據(jù),而是把InputStream或者OutputStream封裝為DataInputStream和DataOutputStream。這樣我們就可以使用DataOutputStream中的writeUTF(String s)來送出數(shù)據(jù)了,同時可以使用DataInputStream提供的readUTF()來讀入數(shù)據(jù)。注意在這兩個方法搭配使用的時候要注意順序。比如我們在聯(lián)網(wǎng)的時候可能寫出這樣的代碼
      
        客戶端
      dos.writeInt(myint);
        dos.writeByte(mybyte);
        dos.writeUTF(myString);

        服務(wù)器端
        int i = dis.readInt();
        byte b = dis.readByte();
        String s = dis.readUTF();  
    RMS持久性存儲的中文問題
        由于RMS中的數(shù)據(jù)存儲都是按照byte[]的格式存儲的,因此我們需要稍微變化一下,但是基本上還是走UTF-8的思路。
        
        寫入數(shù)據(jù)
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        dos.writeUTF(myString);
        byte[] data = baos.toByteArray();
        rs.addRecord(data,0,data.length);

        讀出數(shù)據(jù)
        byte[] data = rs.getRecord(index);
        ByteArrayInputStream bais = new ByteArrayInputStream(data);
        DataInputStream dis = new DataInputStream(bais);
        String myString = dis.readUTF();
    讀取中文文件的問題
    在MIDP中并不支持文件系統(tǒng),但是我們可以讀取jar包中的文件。如果文件中含有中文,那么我們需要進(jìn)行一些特殊的處理,首先我們使用UE或者Notepad工具把相關(guān)的文件轉(zhuǎn)換文UTF-8格式編碼。我們在讀取文件的時候需要進(jìn)行如下的簡單處理。下面是處理函數(shù)。

        public String readFromFile(String fileName)
        {
            String returnString = null;
            InputStream is = getClass().getResourceAsStream(fileName);
            if (is != null)
            {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int ch = 0;
                try
                {
                    while ((ch = is.read()) != -1)
                    {
                        baos.write(ch);
                    }
                    byte[] data = baos.toByteArray();
                    returnString = new String(data, "UTF-8");
                    is.close();
                    baos.close();

                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
            return returnString;
        }

    posted on 2005-09-05 03:11 konhon 優(yōu)華 閱讀(440) 評論(0)  編輯  收藏 所屬分類: J2me
    主站蜘蛛池模板: 女人18毛片a级毛片免费| 人成免费在线视频| 亚洲精品在线播放| 亚洲综合久久综合激情久久| 亚洲热妇无码AV在线播放| 亚洲午夜福利精品无码| 亚洲精品天堂成人片?V在线播放| 免费大片黄手机在线观看| 国产91久久久久久久免费| 免费国产成人午夜电影| 免费一级毛片免费播放| 亚洲天堂在线视频| 亚洲一区二区三区无码中文字幕| 人人狠狠综合久久亚洲婷婷| 久久亚洲精品中文字幕无码| 亚洲av无码av制服另类专区| 亚洲精品美女在线观看| 亚洲无限乱码一二三四区| 亚洲精品国产精品国自产网站| 亚洲天堂免费在线| 亚洲国产精品精华液| 日本亚洲高清乱码中文在线观看| 一级毛片a免费播放王色电影 | 亚洲婷婷在线视频| 亚洲国产系列一区二区三区 | 亚洲性日韩精品一区二区三区| AV在线亚洲男人的天堂| 亚洲国产精品高清久久久| 亚洲精品视频免费看| 亚洲精品无码久久久久牙蜜区| 羞羞视频免费网站含羞草| 青柠影视在线观看免费| 成人福利免费视频| 天堂在线免费观看中文版| 亚洲精品乱码久久久久久蜜桃 | 免费羞羞视频网站| 亚洲福利中文字幕在线网址| 亚洲国产精品va在线播放| 亚洲精品中文字幕无码AV| 亚洲色少妇熟女11p| g0g0人体全免费高清大胆视频|