csusky

          常用鏈接

          統計

          最新評論

          JAVA 的字符編碼的問題

          首先講一講字符集
           JDK1.4版本引入了java.nio包加入了Charset類來統一字符集的轉換,字符集給出了雙字節Unicode碼序列與本地字符編碼中采用的字節序列之間的映射
          字符集的名稱不區分大小寫,可以用官方名稱或者任何一個別名調用靜態方法forName來獲得Charset

          1Charset charset=Charset.forName("GBK");
          Charset的aliases()方法返回一個Set<String>集合,表示該字符集所具有的所有別名
          Set<String> aliases=charset.aliases();
          查看虛擬機所支持的字符集以及名字可用Charset的靜態方法availableCharsets()返回一個SortedMap
          1 Map<String,Charset> map=Charset.availableCharsets();
          2            for(String setname:map.keySet()) {
          3                System.out.println(setname);
          4            }
          一旦有了字符集,就可以用他在本地字符串和Unicode字節序列之間轉換
          如下將一個字符串編碼為gbk    charset.encode(str)函數返回一個ByteBuffer對象
          1String str=new String("曉宇");
          2            ByteBuffer  buff = charset.encode(str);
          3            byte[] bytes=buff.array();
          同樣,可以將剛才按照GBK方式編碼的字節流解碼為正確的字符流
          1ByteBuffer by=ByteBuffer.wrap(bytes, 0, bytes.length);
          2      CharBuffer cb=charset.decode(by);//返回一個CharBuffer對象,已經將字節數組轉化為字符數組
          3      System.out.println("  "+cb.toString());


          實際上String類中集成了Charset對象的使用,String類有兩個用于編碼和解碼的函數

          1byte[] bytes = str.getBytes("CharsetName");  //將字符串str按照指定名稱的Charset進行編碼成字節數組
          2            String str2=new String(bytes,"CharsetName"); //將字節數組按照指定名稱的Charset解碼為字符串


          在輸入輸出流中有兩個用于將字節流轉化為指定編碼格式的字符流的類  InputStreamReader/OutputStreamReader
          這兩個類是讀寫流和讀寫器的橋梁 用法如下

          1InputStreamReader isr = new InputStreamReader(in, "charsetname");
          2            BufferedReader br = new BufferedReader(isr);//加入一個BufferedReader,可以用到該類的readLine()

          該用法在我的另外一篇socket備忘的里面體現了,可將網絡傳過來的utf-8格式編碼的字節流正確的解碼,以至于顯示的時候不會出現亂碼





          posted on 2008-02-24 16:44 曉宇 閱讀(524) 評論(0)  編輯  收藏 所屬分類: JAVA基礎

          主站蜘蛛池模板: 汽车| 开鲁县| 玉山县| 新兴县| 昌图县| 麻栗坡县| 清流县| 六枝特区| 突泉县| 洪江市| 藁城市| 佛冈县| 福贡县| 昌江| 左权县| 新巴尔虎左旗| 阳曲县| 佳木斯市| 电白县| 襄樊市| 东明县| 韶山市| 新建县| 岢岚县| 景宁| 宝兴县| 无锡市| 石屏县| 岳阳县| 定南县| 怀安县| 双桥区| 塔河县| 萨迦县| 哈尔滨市| 昌宁县| 沿河| 乌兰浩特市| 留坝县| 武安市| 临泉县|