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

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

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

    Live a simple life

    沉默(zhu_xing@live.cn)
    隨筆 - 48, 文章 - 0, 評論 - 132, 引用 - 0
    數(shù)據(jù)加載中……

    【原創(chuàng)】JDK 1.4有關(guān)編碼的一個(gè)bug

            在JDK 1.4中存在一個(gè)有關(guān)編碼的問題。簡要描述如下:
            通過參數(shù)-Dfile.encoding="charset"設(shè)定特定的字符集,但是并不會(huì)被當(dāng)作Reader或者Writer的默認(rèn)字符集使用。這個(gè)問題,有時(shí)候會(huì)引起隱藏較深的亂碼問題。JDK 1.5和1.6中此問題已經(jīng)不存在,所以,如果遇到在同樣默認(rèn)字符集系統(tǒng)上面運(yùn)行,基于JDK 1.5正常,基于JDK 1.4則出現(xiàn)亂碼問題的時(shí)候,注意一下是否由于此問題引起。
            (原來JDK 1.4的這個(gè)bug在腦子中特別清晰,最近忘了,頭兩天遇到了,搞了半天~_~。發(fā)出來吧,也給大家提個(gè)醒)
           測試程序如下:
            

     1 public static void main(String[] args) {
     2     try {
     3        File file = new File("D:/text.txt");
     4        file.createNewFile();
     5        InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
     6        OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file));
     7        System.out.println(reader.getEncoding());
     8        System.out.println(writer.getEncoding());
     9     } catch (IOException e) {
    10          e.printStackTrace();
    11     }
    12 }

            【執(zhí)行環(huán)境】
            Windows XP中文,默認(rèn)系統(tǒng)字符集是GBK
            啟動(dòng)參數(shù)設(shè)置:-Dfile.encoding=utf-8

            在JDK 1.4.2版本上輸出如下:
            GBK
            GBK        

            在JDK 1.5.0_09版本上輸出如下:
            UTF8
            UTF8

            由以上測試結(jié)果可以看出,在JDK 1.4上面,通過參數(shù)-Dfile.encoding="charset"設(shè)定特定的字符集,但是并不會(huì)被當(dāng)作Reader或者Writer的默認(rèn)字符集使用在JDK 1.4版本上面,此可能引起很多問題,例如read的部分是由于某開源庫完成,則內(nèi)部實(shí)現(xiàn)可能強(qiáng)制采用了-Dfile.encoding的配置;輸出由我們自己完成,則默認(rèn)的writer并不會(huì)默認(rèn)采用-Dfile.encoding的設(shè)置,這樣解碼和編碼用的字符集就不一致,可能就會(huì)引起亂碼問題。
            簡而言之,在JDK 1.4上開發(fā),在利用字符流編解碼需要依賴-Dfile.encoding設(shè)置的時(shí)候,要注意此問題。

            附加說明:
            1、可以對InputStreamReader和OutputStreamWriter兩個(gè)wrapper設(shè)定明確的編輯碼字符集
            2、如果像和當(dāng)前系統(tǒng)的-Dfile.encoding設(shè)置保持絕對一直,可以將System.getProperty("file.encoding")傳入InputStreamReader和OutputStreamWriter



    本博客中的所有文章、隨筆除了標(biāo)題中含有引用或者轉(zhuǎn)載字樣的,其他均為原創(chuàng)。轉(zhuǎn)載請注明出處,謝謝!

    posted on 2008-08-01 19:57 zhuxing 閱讀(1765) 評論(1)  編輯  收藏 所屬分類: Java

    評論

    # re: 【原創(chuàng)】JDK 1.4有關(guān)編碼的一個(gè)bug  回復(fù)  更多評論   

    記得我以前也是專門測試過這個(gè)問題,所以盡量是在代碼中來指定讀寫的字符集。
    2008-08-01 22:43 | 隔葉黃鶯
    主站蜘蛛池模板: 曰批全过程免费视频在线观看无码 | 久久久亚洲裙底偷窥综合| 亚洲精品视频免费| 亚洲色婷婷综合开心网| 一区二区三区免费在线视频| 免费国产在线观看老王影院| 日韩欧美亚洲国产精品字幕久久久| 天天看免费高清影视| 亚洲αⅴ无码乱码在线观看性色| 国产精品免费综合一区视频| 亚洲av成人一区二区三区观看在线| 国产男女猛烈无遮挡免费视频 | aa级一级天堂片免费观看| 亚洲成aⅴ人片在线观| 永久免费的网站在线观看| 亚洲国产精品嫩草影院| 免费a级毛片在线观看| 久久精品成人免费国产片小草| 国产亚洲精品自在线观看| 国内精品久久久久影院免费| 久久精品国产亚洲av水果派| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 一区二区免费电影| 亚洲∧v久久久无码精品| 国产高清不卡免费在线| 亚洲国产精品18久久久久久 | 久久亚洲精品中文字幕三区| 全部免费毛片在线播放| 亚洲日韩国产一区二区三区在线| 国产一级淫片a免费播放口之| 波霸在线精品视频免费观看| 亚洲黄色免费网址| 日韩免费无砖专区2020狼| CAOPORN国产精品免费视频| 337p日本欧洲亚洲大胆色噜噜| 在线a人片天堂免费观看高清| 国产VA免费精品高清在线| 97久久精品亚洲中文字幕无码| 午夜免费福利在线| 三级网站免费观看| 亚洲精品无码一区二区|