線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2824
推到 Plurk!
推到 Facebook!

請問關於getBytes之使用

尚未結案
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-15 18:27:42 IP:61.219.xxx.xxx 未訂閱
各位大大:         小弟新手上路,應該是個人觀念不清,所以想請問有關getBytes的用法,getBytes不是可以用來轉換成中文嗎?可是我卻無法得到想要的中文。請各位幫忙指教。         小弟嘗試寫一個簡易的小程式,卻得到怪怪的結論,請看:
public class justTest{
   public static void main(String[] args) {
      try {
         String a,b;
         a = "中文";
         b = new String(a.getBytes("8859_1"), "Big5");
         System.out.println(a);
         System.out.println(b);
      } catch (Exception e) {
         System.out.println(e.toString());
      }
   }
}
[Output] 中文 ?? [/Output]
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-16 01:10:19 IP:203.204.xxx.xxx 未訂閱
你好~請改成這樣  
public class justTest{
   public static void main(String[] args) {
      try {
         String a,b;
         a = "中文";
         byte[] code = a.getBytes("Big5"); 
         b=new String(code, "Big5");
         System.out.println(a);
         System.out.println(b);
      } catch (Exception e) {
         System.out.println(e.toString());
      }
   }
}     
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-16 08:50:43 IP:61.219.xxx.xxx 未訂閱
嗯,感謝rogan321,成功的秀出來了,可是仍有不解之處,之前查到的資料大多是說可用8859_1、MS950、Big5,也看過程式碼有用8859_1的,可是為何在此處要使用Big5才可以顯示出來,而用8859_1就不行呢?而這三者又有何差異呢?
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-16 14:03:52 IP:203.204.xxx.xxx 未訂閱
引言: 你好~請改成這樣
public class justTest{
   public static void main(String[] args) {
      try {
         String a,b;
         a = "中文";
         byte[] code = a.getBytes("Big5"); 
         b=new String(code, "Big5");
         System.out.println(a);
         System.out.println(b);
         String encod=System.getProperty("file.encoding");
         System.out.println(encod);
      } catch (Exception e) {
         System.out.println(e.toString());
      }
   }
}     
你好~那些都是各種規格的文字編碼有些許相容有些許問題~你可以在上面加上黑體的兩行得到你JRE的編碼方式,Java 內部是使用 Unicode~MS950,但是作業系統不見得,這是一種相容於Big5的編碼方式。所以可正確互換你可試看看~一開始你的變數a的字串指定編碼即是ms950,也就是說你可以將a.getBytes("Big5");改成a.getBytes("MS950"); 一開始你將a指定為8859形式存進BYTES當然出錯~再轉為BIG5就會轉不回來了~至於8859使用的環境大多為jsp網頁因跨平台的關係並非皆使用ms的作業系統~才使用之~也須事先設定字串編碼為8859~ 發表人 - rogan321 於 2004/12/16 14:24:55
系統時間:2024-05-08 23:37:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!