JAVA编码问题

java为了国际通用,使用的unicode字符集,但是字符的表示却需要字符的编码方式,就是我们常见的GBK,UTF-8之类的,今天看到别人的博客,自己也想再次探秘一下一直困惑着我的字符编码问题.

 public class TestCode{  public static void main(String [] args){   String name="胡";   char c_name = name.charAt(0);   int lowByte = (c_name)&0xff;   int highByte = (c_name>>8)&0xff;   System.out.println(Integer.toHexString(highByte)+" "+Integer.toHexString(lowByte));   try{    byte[] bt = name.getBytes("utf-16be");//编码    printByte(bt);   }catch(Exception e){       }  }    public static void printByte(byte[] bt){   try{    String str = new String(bt,"utf-16be");//解码    System.out.println(str);   }catch(Exception e){       }   for(int i=0;i<bt.length;i++){    int hex = (int)bt[i]&0xff;    System.out.print(Integer.toHexString(hex)+" ");   }   System.out.println();   System.out.println("length="+bt.length);  } }

在编码处使用不同的字符编码方式,汉字编码后的字节情况为:

iso-8859-1 一个字节值为3f,是问号的编码,相信大家在开发时候是经常遇见的.

gbk,gb2312是两个字节.

utf-8是3个字节

utf-16是4个字节(当使用utf-16编码英文字符时候也会占用两个字节,其他编码方式都是1个字节)

utf-16be编码的字符是两个字节(英文字符或者汉字),不过编码后的字节是先低后高字节.

utf-16le我个人认为应该是java本身保存字符使用的编码,应为java定义char型数据为两个字节,所以即便是

定义汉字用此编码也是两个字节,而且编码后的字节是先高后低字节

 

类似汉字在应用程序中经常出现编码的原因我认为只要确保一个原则就可以解决了,那就是在编码跟解码处的

编码方式一定要一样.所以从数据库里读到页面上的数据就需要变换数据的编码方式.总是保证编解码一致就

应该可以正确显示.

小弟自己写代码总结的,班门弄斧了,有不对的地方请大家多批评,渴望交流,渴望高手指点.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值