首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:String 类
1.1 概述
1.2 字面量的定义方式
1.3 String 的特点
1.4 String 的内存示意图
1.5 构造 String 对象
1.6 字符串拼接问题
1.7 字符串对象的比较
1.8 空字符串的比较
1.9 字符串的常用方法
1.10 常见正则表达式
第二章:StringBuilder 类
2.1 概述
2.2 常用方法
第三章:系统相关类
3.1 System 类
3.2 Runtime 类
第四章:数学相关的类
4.1 Math 类
4.2 大数运算类
第五章:数组的相关操作
5.1 数组的算法升华
5.2 数组工具类
第六章:日期时间API
6.1.1 概述
6.1.2 本地日期时间
6.2.3 指定时区日期时间 ZonedDateTime
6.2.4 持续日期/时间 Period 和 Duration
6.2.5 日期时间格式化 DateTimeFormat
第七章:字符编码的发展
7.1 ASCII 码
7.2 OEM 字符集的诞生
7.3 多字节字符集(MBCS)和中文字符集
7.4 ANSI 标准、国家标准以及 ISO 标准
7.5 Unicode 的出现
当前位置:
首页>>
技术小册>>
Java语言基础9-常用API和常见算法
小册名称:Java语言基础9-常用API和常见算法
- 虽然通过使用不同的字符集,我们可以在一台机器上查阅不同语言的文档,但是我们依然无法解决一个问题:如果一份文档中含有不同国家的不同语言的字符,那么就无法在一份文档中显示所有字符。为了解决这个问题,我们需要一个全人类达成共识的巨大的字符集,这就是 Unicode 字符集。 - Unicode 字符集涵盖了目前人类使用的所有字符,并为每个字符进行了统一的编号,分配唯一的字符码(Code Point)。Unicode 字符集将所有字符按照使用上的频繁度划分为 17 个层面(Plane),每个层面上有 216=65536 个字符码空间。其中第 0 层面 BMP,基本涵盖了当今世界用到的所有字符。其他的层面要么是用来表示一些远古时期的文字,要么是留作扩展。我们平常用到的 Unicode 字符,一般都是位于 BMP 层面上的。目前 Unicode 字符集中尚有大量字符空间未使用。 - 在内存中每一个字符使用它在 Unicode 字符集中的唯一编码值表示,这是没有问题的。因为 Unicode 字符集中字符编码值的范围是 [0, 65535],在 Java 的 JVM 内存中无论这个字符的编码值是多少,都分配 2 个字节。 - 但是在其他环境中,如:文件、IO 流中,Unicode 就不完美了,主要有三个问题: - ① 在文件或 IO 流中英文字母等 ASCII 码表中的字符只用一个字节表示, - ② 如何才能区别这是 Unicode 和 ASCII,即计算机怎么知道两个字节表示一个符号,而不是分别表示两个符号呢? - ③ 如何和 GBK 等双字节编码方式一样,用最高位是 1 或 0 表示两个字节或一个字节,就少了很多值无法用于表示字符,不够表示所有字符。 - Unicode 在很长一段时间内无法推广,直到互联网的出现,为解决 Unicode 如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8 就是每次 8 个位传输数据,而 UTF-16 就是每次 16 个位。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。 - UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用 1~4 个字节表示一个符号。从 Unicode 到 UTF-8 并不是直接的对应,而是要过一些算法和规则来转换(即Uncidoe字符集≠UTF-8编码方式)。 ![](/uploads/images/20230726/0489987e4a700f6d77074b15464367a7.png) - 因此,Unicode 只是定义了一个庞大的、全球通用的字符集,并为每个字符规定了唯一确定的编号,具体存储成什么样的字节流,取决于字符编码方案。推荐的 Unicode 编码是 UTF-16 和 UTF-8。 - 早期字符编码、字符集和代码页等概念都是表达同一个意思。例如:GB2312 字符集、GB2312 编码,936 代码页,实际上说的是同个东西。 - 但是对于 Unicode 则不同,Unicode 字符集只是定义了字符的集合和唯一编号,Unicode 编码,则是对 UTF-8、UCS-2/UTF-16 等具体编码方案的统称而已,并不是具体的编码方案。所以当需要用到字符编码的时候,你可以写gb2312,codepage936,utf-8,utf-16,但请不要写 Unicode。
上一篇:
7.4 ANSI 标准、国家标准以及 ISO 标准
该分类下的相关小册推荐:
Java语言基础3-流程控制
Java语言基础11-Java中的泛型
Mybatis合辑5-注解、扩展、SQL构建
Mybatis合辑1-Mybatis基础入门
Java高并发秒杀入门与实战
手把手带你学习SpringBoot-零基础到实战
Java性能调优实战
java源码学习笔记
Java并发编程
Mybatis合辑4-Mybatis缓存机制
Java语言基础13-类的加载和反射
Java并发编程实战