方偉的博客
          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)  編輯  收藏 所屬分類: 短信網關
          主站蜘蛛池模板: 临江市| 通化县| 瑞安市| 凌云县| 上思县| 石首市| 大城县| 桂林市| 临汾市| 来安县| 万山特区| 北票市| 霍邱县| 焦作市| 蕉岭县| 儋州市| 德兴市| 凤凰县| 霍邱县| 桦甸市| 澎湖县| 永宁县| 城固县| 连江县| 宁城县| 育儿| 乐业县| 敦化市| 滦南县| 松滋市| 平乡县| 赣州市| 武威市| 福建省| 新田县| 府谷县| 五家渠市| 五大连池市| 和龙市| 孝昌县| 宾阳县|