2011年3月22日

<Java> JVA209-文字編碼的轉換



(1) 程式執行後,會將該字串每一個字元轉為16進位(4位數),並將每個字元與字元間的16進位碼以空白分隔顯示
(2) 請將字串轉成BIG5碼,並以16進位顯示出來
(3) 請將轉成BIG5碼的16進位碼轉回原字串並顯示

=============================

import java.io.*;
public class JVA209 {
   
  public static void main(String[] args) {
     String str = "JAVA程式";

      //將字串str的Unicode碼以16進位表示,並轉成字串。
    String str16 = toHexString(str);
     System.out.println("Unicode 碼 16 進位 \t" + str16);
     
      //將字串str轉成Big5碼
   String strb = unicodeToBig5(str);
   
      //將字串str的Big5碼以16進位表示,並轉成字串。
   str16 = toHexString(strb);
     System.out.println("Big5 碼 16 進位 \t"+ str16);
      //將Big5碼表示的字串strBig5再轉回Unicode碼,得到原字串。
   String stru = big5ToUnicode(strb);
   System.out.println("原字串 \t\t\t"+ stru);
  }
  
   // 方法toHexString接受一個字串當參數,取出字串中每一個字元的16進位碼
   // (4位數),再將這些16進位碼串成字串後傳回,每個碼之間用一空白分隔。
  public static String toHexString(String str) {
     // 請在此寫出本方法的程式碼
     String strResult = "";
   String s2="";
   char c;
      for(int i=0; i<str.length(); i++){
         c = str.charAt(i);
         s2 = "0000" + Integer.toHexString(c);
         strResult += s2.substring((s2.length()-4)) + " ";
      }
      return strResult;
   }
   // 方法unicodeToBig5接受一個以Unicode表示的字串,
   // 將其轉成以Big5表示的字串後傳回。
  public static String unicodeToBig5(String str) {
     // 請在此寫出本方法的程式碼
   String strResult = "";
      try{
         strResult = new String(str.getBytes("Big5"),"ISO8859_1");
      }catch(Exception e){
      }
      return strResult;
   }
  // 方法big5ToUnicode接受一個以Big5表示的字串,
  // 將其轉成以Unicode表示的字串後傳回。
  public static String big5ToUnicode(String str) {
     // 請在此寫出本方法的程式碼
   String strResult = "";
      try{
         strResult = new String(str.getBytes("ISO8859_1"),"Big5");
      }catch(Exception e){
      }
      return strResult;      
   }
}


相關函式說明:
String(byte[] bytes, String charsetName)

參考網站:
Java A+

沒有留言:

張貼留言