编码表

常见的编码表:

ASCII 美国标准信息交换码,用一个字节的7位表示

ISO-8859-1  拉丁码表,欧洲码表,用一个字节的全部8位表示

GB2312:中国的中文码表

GBK:GB2312的升级,融合了更多的中文文字符号

Unicode:国际标准码,融合了多种文字,所有文字都是使用两个字节来表示,java就是使用Unicode编码表

UTF-8:最多用三个字节来表示一个字符。如果能用一个字节来装,就使用一个字节,一个装不下,就用两个字节,最多三个字节

 

 

string s="你好";

byte[] buf=s.getBytes("GBK");// -60 -29 -70 -61  你好的GBK编码

byte[] buf=s.getBytes("UTF-8");// -28 -67 -96 -27   -91  -67  你好的UTF-8编码

 

 

//编码;
byte[] buf = str.getBytes("UTF-8");

//解码:
String s1 = new String(buf,"UTF-8");

 

 

乱码问题,类似tomcat里。

String str = "谢谢";

byte[] buf = str.getBytes("gbk");//使用GBK进行编码

String s1 = new String(buf,"UTF-8");//解码的时候使用了utf-8,出现乱码

解决办法是获取utf-8对应的字节值,然后再使用GBK解码就可以了,Tomcat就是这样做的。

byte[] buf2 = s1.getBytes("UTF-8");//获取源字节.
 
String s2 = new String(buf2,"GBK");//s2就是  谢谢

 

在java中"abcd"与"ab你好"的长度是一样的,都是四个字符,但是对应的字节数是不一样的。一个汉字两个字节。

 

转载于:https://www.cnblogs.com/lxboy2009/p/5928321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值