企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
计算机能够理解的是01位。 编码就是让计算机能够理解人类的符号。 计算机中存储信息的最小单元是一个字节即 8 个 bit,所以能表示的字符范围是 0~255 个 > 然而,人类的语言太多,因而表示这些语言的符号太多,无法用计算机中的一个基本单元表示一个字符。 因此一个人类语言符号需要多个计算机基础单元(byte)表示。 然而针对不同的语言,表示一个人类符号的byte个数可能不同,以下看具体区别。 ### char char是一个新的数据结构,一个char表示一种人类语言的一个字符。 不同的语言(实质应该是不同的编码方式),一个char对用的byte个数不同。 - ASCII 码,总共 128 个,用一个字节的低 7 位表示 - 扩展 ASCII 编码。ISO-8859-1 仍然是单字节编码,它总共能表示 256 个字符。 - GB2312,双字节编码。总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。 - GBK ,为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。 - GB18030,是我国的强制标准,它可能是单字节、双字节或者四字节编码,它的编码与 GB2312 编码兼容,这个虽然是国家标准,但是实际应用系统中使用的并不广泛。 - UTF-16,说到 UTF 必须要提到 Unicode(Universal Code 统一码),ISO 试图想创建一个全新的超语言字典,世界上所有的语言都可以通过这本字典来相互翻译。可想而知这个字典是多么的复杂,关于 Unicode 的详细规范可以参考相应文档。Unicode 是 Java 和 XML 的基础,下面详细介绍 Unicode 在计算机中的存储形式。 UTF-16 具体定义了 Unicode 字符在计算机中存取方法。UTF-16 用两个字节来表示 Unicode 转化格式,这个是定长的表示方法,不论什么字符都可以用两个字节表示,两个字节是 16 个 bit,所以叫 UTF-16。UTF-16 表示字符非常方便,每两个字节表示一个字符,这个在字符串操作时就大大简化了操作,这也是 Java 以 UTF-16 作为内存的字符存储格式的一个很重要的原因。 - UTF-8,变长的。 并且这些编码方式定义了完整的转化规则。按照这个规则计算机可以正确的表示我们的字符。 编码方式的选择: 是存储空间重要还是编码的效率重要等因素。 [Java几种常见的编码方式](https://www.cnblogs.com/mlan/p/7823375.html) ### java项目源代码文件编码 1. 源代码的编译,可以选择编码方式:一般UTF-8,可以是GBK等。但是必须和源代码文件的编码一致。 否则编译后的class文件,中文已经是乱码。 [Java如何获取文件编码格式](http://www.cnblogs.com/java0721/archive/2012/07/21/2602963.html) [IDEA的项目编码设置](https://blog.csdn.net/mingjie1212/article/details/58586710) ### java文件版本 项目的源代码版本、编译用的jdk、编译后的class文件jdk版本(编译版本) [IDEA源代码版本模式1.5问题](https://www.jianshu.com/p/451271c4de11)