基于Java字符编码的使用详解

 更新时间:2013年05月06日 19:03:40   投稿:jingxian  
本篇文章对Java字符编码的使用进行了详细的分析介绍。需要的朋友参考下

1,什么是字符编码?

    字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。一组抽象字符的集合就是字符集(Charset)。字符集的出现是为了信息进行传播储存提供方便。目前常用到字符集有:ASCII,ISO 8859-1,Unicode,GB2312

2,各种编码集有哪些特点?

ASCII:

    ASCII是基于拉丁字母的一套电脑编码系统。

    包含内容:控制字符(回车,退格,换行键),可显示式字符。

    技术特征:7位(bits)表示一个字符,共128字符

    不足之处:只能表示英语,想西欧,东亚和拉美地区的语言符号无法表示。

ISO 8859-1:

    ISO 8859-1,正式编号为ISO/IEC 8859-1:1998,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。

    它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用附加符号的拉丁字母语言使用。曾推出过 ISO 8859-1:1987 版。

    包含内容:ASCII编码包含的,部分西欧使用的语言。

    技术特征:8位表示一个字符。

Unicode:

    Unicode字符集编码是Universal Multiple-Octet Coded Character Set 通用多八位编码字符集的简称,是由一个名为 Unicode 学术学会(Unicode Consortium)的机构制订的字符编码系统,支持现今世界各种不同语言的书面文本的交换、处理及显示。该编码于1990年开始研发,1994年正式公布,最新版本是2005年3月31日的Unicode 4.1.0。

    技术特征:16位编码,每个字符占用2个字节。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)。如果一个7位的ASCII字符的Unicode文件,在传输过程中如果使用2个字节的原Unicode编码传输会造成比较大的浪费。对于这种情况,可以使用UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。

GB2312:

    包含内容:6763个汉字,其中一级汉字3755个,二级汉字3008个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个字符。

    技术特征:每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了0xA1-0xF7,“低位字节”使用了0xA1-0xFE0xA0)。 由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

相关文章

  • java 源码分析Arrays.asList方法详解

    java 源码分析Arrays.asList方法详解

    这篇文章主要介绍了java 源码分析Arrays.asList方法详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • JNI实现最简单的JAVA调用C/C++代码

    JNI实现最简单的JAVA调用C/C++代码

    这篇文章主要介绍了JNI实现最简单的JAVA调用C/C++代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SpringBoot中MapStruct实现优雅的数据复制

    SpringBoot中MapStruct实现优雅的数据复制

    本文主要介绍了SpringBoot中MapStruct实现优雅的数据复制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Spring boot2.0 实现日志集成的方法(3)

    Spring boot2.0 实现日志集成的方法(3)

    这篇文章主要介绍了Spring boot2.0 实现日志集成的方法,基于上一篇将日志信息根据类别输出到不同的文件中,这篇文章将通过日志来监控用户的操作行为、请求的耗时情况,针对耗时久的请求进行性能分析,提升系统性能,需要的小伙伴可以参考一下
    2022-04-04
  • 使用java执行定时任务示例

    使用java执行定时任务示例

    这篇文章主要介绍了使用java执行定时任务示例,需要的朋友可以参考下
    2014-04-04
  • Java中的volatile关键字原理深入解析

    Java中的volatile关键字原理深入解析

    这篇文章主要介绍了Java中的volatile关键字原理深入解析,volatile是Java 编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量,需要的朋友可以参考下
    2023-12-12
  • java9学习笔记之模块化详解

    java9学习笔记之模块化详解

    Java 9中最重要的功能,毫无疑问就是模块化(Module),下面这篇文章主要给大家介绍了关于java9学习笔记之模块化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2018-04-04
  • springboot项目配置logback-spring.xml实现按日期归档日志的方法

    springboot项目配置logback-spring.xml实现按日期归档日志的方法

    本文主要介绍了springboot项目配置logback-spring.xml实现按日期归档日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • java实现消息队列的两种方式(小结)

    java实现消息队列的两种方式(小结)

    本文主要介绍了两种java实现消息队列的方式,利用Spring消息模板发送消息和Apache ActiveMQ官方实例发送消息,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • SwiftUI中级List如何添加新内容(2020年教程)

    SwiftUI中级List如何添加新内容(2020年教程)

    这篇文章主要介绍了SwiftUI中级List如何添加新内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论