ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java默认编码Unicode和ASCII、UTF-8等的区别

2022-02-16 09:01:05  阅读:274  来源: 互联网

标签:编码 Java 字节 符号 Unicode UTF ASCII


  • Java文件编译成Class文件,是由Java编译器处理的,windows上是javac.exe,生成的文件编码是Unicode编码。
  • Class文件加载到JVM的时候,就是JVM读取Class文件的时候是以Unicode编码读取的。

Java中默认的编码方式是Unicode !

在学习字节流和字符流的时候,突然发现自己对字符集编码不是很了解,所以特意学习一发,总结ASCII,Unicode,UTF-8的对比。

开始:ASCII编码

  • 计算机内部以二进制位(bit)作为基础数据,所以就有0和1两种状态。
  • 八个二进制位(bit)为一个字节(byte),可以组合出256种状态,每一个状态对应一个符号共256个符号,从0000000到11111111。

因此在上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。

ASCII码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

混乱:非ASCII编码

因为英语128个符号就可以了,但是其他国家是远远不够的,语言系统完全不一样。所以他们各自都很聪明,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。

编码很混乱

各个国家自己扩展了自己语言系统的编码,于是全球出现无数种乱七八糟的编码。比如说下中国:

  1. 等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。于是国人就自主研发出“GB2312″,GB2312 是对 ASCII 的中文扩展。
  2. 但是中国的汉字太多了,后来还是不够用,于是扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。
  3. 后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。

统一:Unicode编码

  1. 一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。
  2. 采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!
  3. 他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。

但是呢,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。所以实际上这个Unicode只是一个字符的协议文档,具体的实现是由各自实现的,所以衍生出UTF-8,UTF-16,UTF-32。

  • UTF-8:就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
  • UTF-16:字符用两个字节或四个字节表示
  • UTF-32:字符用四个字节表示

总结一下,他们的关系如图:


  image.png

作者:taojian
链接:https://www.jianshu.com/p/483b79197852
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:编码,Java,字节,符号,Unicode,UTF,ASCII
来源: https://www.cnblogs.com/damoblog/p/15898905.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有