日期:2014-05-20  浏览次数:20699 次

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;

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