---恢复内容开始---
java字符集中常用gbk和utf-8,那么他们之间的区别有哪些呢?
关于汉字:
UTF-8一个汉字占用3个字节;
GBK或者GB2312一个汉字占用2个字节;
关于英文字母或者数字:
UTF-8一个英文字母或者一个数字占用2个字节;
GBK或者GB2312一个英文字母或者数字占用1个字节;
因此使用new String(tmp.getBytes("ISO-8859-1"), "UTF-8") 或者 new String(tmp.getBytes("ISO-8859-1"), "GBK")可以得到正确的中文,但是使用 new String(tmp.getBytes("GBK"), "UTF-8") 却不能将GBK转换成UTF-8。
附:String str="嗨";
String str2="a";
String num="1";
try {
System.out.println("UTF-8 汉字:"+str.getBytes("utf-8").length);
System.out.println("GBK汉字:"+str.getBytes("GBK").length);
System.out.println("GB2312汉字:"+str.getBytes("gb2312").length);
System.out.println("UTF-8 字符:"+str2.getBytes("utf-8").length);
System.out.println("GBK 字符:"+str2.getBytes("GBK").length);
System.out.println("GB2312 字符:"+str2.getBytes("gb2312").length);
System.out.println("UTF-8 数字:"+num.getBytes("utf-8").length);
System.out.println("GBK 数字:"+num.getBytes("GBK").length);
System.out.println("GB2312 数字:"+num.getBytes("gb2312").length);
} catch (UnsupportedEncodingException e) {
}
输出:
UTF-8 汉字:3
GBK汉字:2
GB2312汉字:2
UTF-8 字符:1
GBK 字符:1
GB2312 字符:1
UTF-8 数字:1
GBK 数字:1
GB2312 数字:1
---恢复内容结束---
java字符集中常用gbk和utf-8,那么他们之间的区别有哪些呢?
关于汉字:
UTF-8一个汉字占用3个字节;
GBK或者GB2312一个汉字占用2个字节;
关于英文字母或者数字:
UTF-8一个英文字母或者一个数字占用2个字节;
GBK或者GB2312一个英文字母或者数字占用1个字节;
因此使用new String(tmp.getBytes("ISO-8859-1"), "UTF-8") 或者 new String(tmp.getBytes("ISO-8859-1"), "GBK")可以得到正确的中文,但是使用 new String(tmp.getBytes("GBK"), "UTF-8") 却不能将GBK转换成UTF-8。
附:String str="嗨";
String str2="a";
String num="1";
try {
System.out.println("UTF-8 汉字:"+str.getBytes("utf-8").length);
System.out.println("GBK汉字:"+str.getBytes("GBK").length);
System.out.println("GB2312汉字:"+str.getBytes("gb2312").length);
System.out.println("UTF-8 字符:"+str2.getBytes("utf-8").length);
System.out.println("GBK 字符:"+str2.getBytes("GBK").length);
System.out.println("GB2312 字符:"+str2.getBytes("gb2312").length);
System.out.println("UTF-8 数字:"+num.getBytes("utf-8").length);
System.out.println("GBK 数字:"+num.getBytes("GBK").length);
System.out.println("GB2312 数字:"+num.getBytes("gb2312").length);
} catch (UnsupportedEncodingException e) {
}
输出:
UTF-8 汉字:3
GBK汉字:2
GB2312汉字:2
UTF-8 字符:1
GBK 字符:1
GB2312 字符:1
UTF-8 数字:1
GBK 数字:1
GB2312 数字:1