<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
    數據加載中……

    【原創】JDK 1.4有關編碼的一個bug

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

     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 }

            【執行環境】
            Windows XP中文,默認系統字符集是GBK
            啟動參數設置:-Dfile.encoding=utf-8

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

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

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

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



    本博客中的所有文章、隨筆除了標題中含有引用或者轉載字樣的,其他均為原創。轉載請注明出處,謝謝!

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

    評論

    # re: 【原創】JDK 1.4有關編碼的一個bug  回復  更多評論   

    記得我以前也是專門測試過這個問題,所以盡量是在代碼中來指定讀寫的字符集。
    2008-08-01 22:43 | 隔葉黃鶯
    主站蜘蛛池模板: 国产av无码专区亚洲av果冻传媒| 国产精品V亚洲精品V日韩精品| 亚洲Av永久无码精品黑人| 波多野结衣中文一区二区免费 | 国产免费人成视频尤勿视频| 亚洲熟妇丰满多毛XXXX| 亚洲w码欧洲s码免费| 午夜视频免费在线观看| 亚洲XX00视频| 中文字幕亚洲免费无线观看日本| 亚洲国产欧美日韩精品一区二区三区 | 免费国产在线观看不卡| 久久午夜无码免费| 亚洲av无码专区首页| 久久久久久亚洲精品中文字幕| 成人免费AA片在线观看| 国产一级一毛免费黄片| 亚洲一区二区三区高清不卡| 国产福利电影一区二区三区,亚洲国模精品一区 | 精品在线观看免费| 亚洲综合在线成人一区| 亚洲人成网站色在线入口| 国产免费丝袜调教视频| 国产免费人成视频在线播放播| 亚洲偷自拍另类图片二区| 成年性生交大片免费看| 99久久成人国产精品免费| 亚洲男同gay片| 久久精品国产亚洲AV香蕉| 亚洲一级片内射网站在线观看| 毛片A级毛片免费播放| 色欲国产麻豆一精品一AV一免费| 美女18一级毛片免费看| 亚洲视频无码高清在线| 亚洲第一成年男人的天堂| 亚洲五月午夜免费在线视频| 高清国语自产拍免费视频国产| 精品国产免费人成电影在线观看| 伊人免费在线观看高清版| 污网站免费在线观看| 亚洲中文字幕无码亚洲成A人片|