作者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