作者TsaiCF (Feng)
看板java
標題Re: [問題] 請問有關BIG5、Unicode之間的轉換
時間Sun Feb 26 03:05:11 2006
: > b=s.getBytes("unicode");
: > for(int i=0;i<b.length;i++) System.out.print(b[i]+" ");
: > }
: > }
: 你好^^
: 我的意思是並不知道"一"這個字
: 只收到BIG5的編碼 A440 (42048)
: 想知道有無function可以呼叫
: 傳入 A440 (42048)
: 可傳回"一"的 Unicode 編碼 4E00
: 謝謝~
所以,你是要知道怎麼把42048變成字串(或char)的 "一".
可以參考下面的code.
不過,我想有兩點是你需要知道的
1. 你第一篇文章寫的
char c = (char) 42048 ;
若直接輸出c就是個 "?", 為什麼?
2. 為什麼我下面的new String(...)都加了"BIG5"這個參數?
// 1
int code = 42048;
byte[] tmpb = new byte[2];
tmpb[0] = (byte) ((code>>>8) & 0xff);
tmpb[1] = (byte) ((code>>>0) & 0xff);
String s1 = new String(tmpb,"BIG5");
System.out.println(s1);
// 2
ByteArrayOutputStream bout = new ByteArrayOutputStream(4);
DataOutputStream out = new DataOutputStream(bout);
out.writeShort(code);
out.writeShort(code+1);
out.writeShort(code+2);
out.close();
byte[] buf = bout.toByteArray();
String s2 = new String(buf,"BIG5");
System.out.println(s2);
// 3
ByteArrayInputStream bin = new ByteArrayInputStream(buf);
InputStreamReader in = new InputStreamReader(bin,"BIG5");
int code2=0;
while ((code2=in.read())>=0) {
System.out.println(code2);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.139.194