方偉的博客
          j2ee技術、網絡、web等,同名的人真多,我的QQ是20025404
          posts - 21,comments - 14,trackbacks - 0
                 其實UCS2這種編碼不像GB2312、UTF-8等,它并不屬于任何語系的語言編碼,實際上是一種編碼格式的世界語。在這個世界上所有可以在計算機中使用的語言都有對應的UCS2編碼。
              正是因為Java采用了UCS2,因此,在Java中可以使用世界上任何國家的語言來為變量名、方法名、類起名,如下面代碼如下:

          public class 中國
          {
              
          public String 雄起()
              {
                   
          return "中國雄起";
              }
          }

          中國 祖國 
          = new 中國();
          System.out.println(祖國.雄起());

          實際上,也可以使用其他的語言來編程,如下面用韓文和日文來定義個類:
          class ???
          {
              
          public void スーパーマン() { ... }
          }

              由于Java內部使用的是UCS2編碼格式,因為,Java并不關心所使用的是哪種語言,而只要這種語言在UCS2中有定義就可以。

              UCS2編碼中為不同國家的語言進行了分頁,這個分頁也叫“代碼頁”或“編碼頁”。中文根據包含中文字符的多少,分了很多代碼頁,如cp935cp936等,然而,這些都是在UCS2中的代碼頁名,而對于操作系統來說,如微軟的windows,一開始的中文編碼為GB2312,后來擴展成了GBK。其實GBKcp936是完全等效的,用它們哪個都行。 

          =============================華麗麗的分隔符===============================

          上面都是廢話了,這里關鍵想說的是,怎么從UCS2轉為GBK?以及怎么從GBK轉為UCS2?

          網上有人提供了個方法:
           public static String decodeUCS2(String src) {
            byte[] bytes = new byte[src.length() / 2];

            for (int i = 0; i < src.length(); i += 2) {
             bytes[i / 2] = (byte) (Integer.parseInt(src.substring(i, i + 2), 16));
            }
            String reValue;
            try {
             reValue = new String(bytes, "UTF-16BE");
            } catch (UnsupportedEncodingException e) {
             throw new RuntimeException(e);
            }
            return reValue;
           }

          但這個并不好使,其實你拿到UCS2字節數組時(首先肯定是字節數組,編碼都不確定,誰會去給它轉成String?),直接:
           String reValue = new String(bytes, "UTF-16BE");
          就行了。 


          至于把中文轉成UCS2,則可以用:

          content.getBytes("UnicodeBigUnmarked")

           

           

           

           

           

          posted on 2013-05-30 15:37 方偉的博客 閱讀(5733) 評論(0)  編輯  收藏 所屬分類: 短信網關
          主站蜘蛛池模板: 叶城县| 湛江市| 南皮县| 饶平县| 平江县| 广宗县| 婺源县| 聂拉木县| 兴和县| 来宾市| 罗山县| 翁源县| 瓮安县| 亚东县| 合作市| 曲靖市| 色达县| 东源县| 招远市| 金溪县| 南开区| 曲靖市| 葫芦岛市| 同心县| 清新县| 奈曼旗| 云南省| 博白县| 静乐县| 岐山县| 方正县| 涪陵区| 西城区| 濮阳市| 拉孜县| 庄浪县| 永清县| 阿拉善右旗| 金川县| 千阳县| 博白县|