读书人

JAVA字符用的Unicode编码为何转换成

发布时间: 2012-01-13 22:43:29 作者: rapoo

JAVA字符用的Unicode编码,为何转换成byte[]却又变成国标码GB2312?
mport java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class webTest extends Applet
{

public void paint(Graphics g)
{
int k=10;
g.setColor(Color.red);

String s="啊";
byte b[]=s.getBytes();
int i1=(int)b[0];
if (i1<0)
i1+=256;
int i2=(int)b[1];
if (i2<0)
i2+=256;
g.drawString(""+i1+":"+i2,20,20);

}
public static void main(String args[])
{
Frame frame0=new Frame("Frame1");
frame0.setSize(800,600);
frame0.setVisible(true);
Graphics g=frame0.getGraphics();
webTest web1=new webTest();
web1.paint(g);
}

}
字符串 “啊”转换成字节数组byte[],
结果是176:161

啊在国标中是第一个汉字,内码是176,161(16区第1位),
java怎么一会UNICODE,一会儿又是国标GB,怎这么随便呢

[解决办法]
我在Ubuntu下面跑的结果是229:149(默认UTF-8嘿嘿),用getBytes(“GB2312”)的结果是176:161
[解决办法]

探讨
我搜过了,getBytes()中没有编码参数时,用的是操作系统的缺省编码,而WINDWOS是GBK,
所以,变成GBK;

[解决办法]
探讨

引用:
我搜过了,getBytes()中没有编码参数时,用的是操作系统的缺省编码,而WINDWOS是GBK,
所以,变成GBK;

这种问题应该先查文档,再谷歌,再发帖子问

读书人网 >J2SE开发

热点推荐