UTF-8 GBK UTF8 GB2312之间的区别和关系
gbk和utf-8就好比ascii一样一个特定数对应一个字符,gbk和utf-8比ascii要大得多;
1、GBK通常指GB2312编码 只支持简体中文字
2、utf通常指UTF-8,支持简体中文字、繁体中文字、英文、日文、韩文等语言(支持文字更广)
3、通常国内使用utf-8和gb2312,看自己需求选择
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。
Java中String和byte[]间的转换
byte[] byteArray = {'w'}; String str = new String(byteArray); byte[] qun = str.getBytes(); String coding = "GBK"; String ceshi = "张继"; byte re[] = ceshi.toString().getBytes(coding); String re1 = new String(re,coding); System.out.println(qun); System.out.println(re.toString()); System.out.println(re1); System.out.println(ceshi.hashCode()); System.out.println(System.identityHashCode(qun)); System.out.println(System.identityHashCode(re));
byte 是怎样转为汉字,汉字转byte的;通过的就是gbk和utf-8,
GBK-unicode对照:GBK-unicode对照_楼边斜月为明的博客-CSDN博客
张:张 (gbk) d5c5 5f20
解说:“张”的byte:-43,-59 这是byte直接输出,转为int 输出是213,103,再转为16进制: d5c5就是GBK的:张
char与byte的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。
char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;
char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。