UTF-8 GBK UTF8 GB2312之间的区别和关系,Java中String和byte[]间的转换,byte 是怎样转为汉字,汉字转byte的;char与

简介: UTF-8 GBK UTF8 GB2312之间的区别和关系,Java中String和byte[]间的转换,byte 是怎样转为汉字,汉字转byte的;char与

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大。


80220a5fe6344225ba068436533d59ef_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


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来表示一个字符 。

相关文章
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
519 0
|
JavaScript Java Android开发
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
413 1
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
494 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
Java系列之:字符串UTF-8 编码格式转换位 UTF-32 【生僻字截取问题】
这篇文章讨论了在Java中处理包含生僻字的字符串时可能遇到的问题,并提供了一种解决方法:将字符串的编码格式从UTF-8转换为UTF-32,以确保每个字符都占用固定的字节数,从而避免在截取操作中破坏字符,示例代码展示了如何进行编码转换和字符串截取。
|
Java
Java——编码GBK的不可映射字符
Java——编码GBK的不可映射字符
531 1
|
存储 Go 索引
Golang 中的 String、rune 和 byte
Golang 中的 String、rune 和 byte
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
641 0
|
Java Apache Maven
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
586 0
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
存储 自然语言处理 Java
Java中的字符型数据(char)
Java中的字符型数据(char)
1239 0