JAVA字符用的Unicode编码,为何转换成byte[]却又变成国标码GB2312?

时间:2021-12-08 20:14:54
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,怎这么随便呢

4 个解决方案

#1


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

#2


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

#3


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

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

#4


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

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

+1

     * Encodes this {@code String} into a sequence of bytes  using the
     * platform's default charset
, storing the result into a new byte array.

#1


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

#2


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

#3


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

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

#4


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

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

+1

     * Encodes this {@code String} into a sequence of bytes  using the
     * platform's default charset
, storing the result into a new byte array.