Java中的byte char String 编码 解码
2017-07-13 11:37
260 查看
char
人能识别的字符,在Java中用Unicode表示,占两个字节,可以表示中文。在jvm中,它的值是唯一的,可以用数字表示:
char a1 ='周'; char a ='\u5468'; //Unicode char aa =0x5468; //十六进制 char aaa = 21608; //十进制 System.out.println(a1); System.out.println(a); System.out.println(aa); System.out.println(aaa); 输出: 周 周 周 周
打印所有char
int u=0; for(int i=0; i<=0xffff; i++){ System.out.print((char)i); u++; if(u==100){ System.out.println(); u=0; } }
String
字符串 本质上就是char[]
String a='中国人4'; System.out.println(a.length); 输出:4
byte[]
计算机能识别的二进制字节,用于CPU计算、存储或网络传输,一个byte有8位(bit)
编码
为什么要编码,Jvm中char可以当做数字来进行运算,每个char占两个字节非常便于CPU计算。但是用作IO传输或存储就显得字节臃余,也不能容错。
想象一下发送电报把一句话(String)变成二进制电文(byte[])叫编码,使用不同的编码表(Charset)产生的二进制电文不一样。
String str ="a中c"; byte[] bytes = str.getBytes("utf-8"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-28,-72,-83,99,
String str ="a中c"; byte[] bytes = str.getBytes("gb2312"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-42,-48,99,
String str ="a中c"; byte[] bytes = str.getBytes("gbk"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,-42,-48,99, 说明gbk与gb2312是部分兼容的
String str ="a中国c"; byte[] bytes = str.getBytes("ascii"); for(byte b : bytes){ System.out.print(b+","); } 输出:97,63,63,99, 对于超出范围的字符用63表示
解码
将电文(byte[])翻译成一句话(String),使用的解码表(Charset)必须和编码的一样
String str ="a中国c"; byte[] bytes = str.getBytes("ascii"); String newStr = new String(bytes, "ascii"); System.out.println(newStr); 输出:a??c
参考:https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
相关文章推荐
- java 中String编码和byte 解码 总结
- java 中String编码和byte 解码总结——字节流和字符流
- java 中String编码和byte 解码 总结
- java 中String编码和byte 解码 总结
- java中utf-8编码的byte数组转换成String类型代码
- Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
- Char, String 和 Byte 等类型间的转换和编码
- java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别
- Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
- Java中byte[]、char[]和String的相互转化
- char与byte的区别,java中的Integer的toBinaryString()方法
- [Java]_[初级]_[utf8编码的byte[]数组转换为String时要注意的问题]
- InetAddress与String类型的转换,byte[]型与String型转换,编码解码
- 【转】Java编码与乱码---String的toCharArray()方法
- Java7版本: switch语句支持String、Enum类型(JDK1.5)与原来byte、short、char和int.
- [Java]_[初级]_[utf8编码的byte[]数组转换为String时要注意的问题]
- java byte/char/string/int之间的转化
- java中utf-8编码的byte数组转换成String类型代码
- [Java]_[初级]_[utf8编码的byte[]数组转换为String时要注意的问题]
- java byte与char、String互转原理