当前位置: 技术问答>java相关
这里有一段将本地字符变为unicode的方法,但我有几点不明请指点一下!
来源: 互联网 发布时间:2015-05-26
本文导语: 请简要介绍一下转换的原理。 pubilc String native2unicode(String s){ if(s == null|| s.length() ==0){ return null; } try{ byte[] buffer = new byte[s.length()*2]; int j=0; for(in...
请简要介绍一下转换的原理。
pubilc String native2unicode(String s){
if(s == null|| s.length() ==0){
return null;
}
try{
byte[] buffer = new byte[s.length()*2];
int j=0;
for(int i=0;i= 0x100){ //???0x100这句话是什么意思?
char c = s.charAt(i);
byte[] buff = (""+c).getBytes();
buffer[j++]=(byte)buf[0];//
buffer[j++]=(byte)buf[1];//还有这两句有什么作用呢?
}else{
buffer[j++] = (byte)s.charAt(i);
}
}
return new String(buffer,0,j);
}catch(Exception er1){
byte[] b=s.getBytes();
try{
return(new String(b,"gb2312"));
}catch(UnsupportedEncodingException err){
return null;
}
}
}
pubilc String native2unicode(String s){
if(s == null|| s.length() ==0){
return null;
}
try{
byte[] buffer = new byte[s.length()*2];
int j=0;
for(int i=0;i= 0x100){ //???0x100这句话是什么意思?
char c = s.charAt(i);
byte[] buff = (""+c).getBytes();
buffer[j++]=(byte)buf[0];//
buffer[j++]=(byte)buf[1];//还有这两句有什么作用呢?
}else{
buffer[j++] = (byte)s.charAt(i);
}
}
return new String(buffer,0,j);
}catch(Exception er1){
byte[] b=s.getBytes();
try{
return(new String(b,"gb2312"));
}catch(UnsupportedEncodingException err){
return null;
}
}
}
|
byte[] buffer = new byte[s.length()*2];
每个字符编码时占用2个字节,因此buffer的大小为字符串长度的两倍。
if(s.charAt(i) >= 0x100){ //???0x100这句话是什么意思?
如果字符对应的16进制数为>=0x100,表示高位字节不为零,则将此字符拆为字节数组,合并到buffer中;
如果字符对应的16进制数为
每个字符编码时占用2个字节,因此buffer的大小为字符串长度的两倍。
if(s.charAt(i) >= 0x100){ //???0x100这句话是什么意思?
如果字符对应的16进制数为>=0x100,表示高位字节不为零,则将此字符拆为字节数组,合并到buffer中;
如果字符对应的16进制数为