Java 中的 Unicode 系统

2025年4月28日 | 阅读 3 分钟
计算机系统在内部以二进制表示形式存储数据。字符是使用 0 和 1 的组合来存储的。这个过程称为编码。字符编码方案很重要,因为它有助于在多种设备上表示相同的信息。

编码类型

以下是在 Unicode 系统之前使用的不同类型的编码。

  • ASCII(美国信息交换标准代码):用于美国
  • ISO 8859-1 用于西欧语言
  • KOI-8 用于俄语
  • GB18030 和 BIG-5 用于中文等。
  • Base64 用于二进制到文本编码

Java 为什么使用 Unicode 系统?

Unicode 系统之前的编码技术存在一些限制。

  1. 每种语言都有不同的字母,分配给每个字母的代码也不同,这意味着多种语言对各种字母有多个代码。
  2. 某些语言有许多字符集,分配给每个字符的代码可能长度不同。例如,某些字符可以用单个字节编码,其他字符可能需要两个或更多字节。

这些问题促使人们为字符编码找到了更好的解决方案,即 Unicode 系统。

什么是 Unicode 系统?

  • Unicode 系统是一种国际字符编码技术,可以表示世界上大多数语言。
  • Unicode 系统由 Unicode 联盟建立。
  • Unicode 字符使用十六进制值表示。
  • 有多种 Unicode 转换格式
    1. UTF-8:表示 8 位(1 字节)长的字符编码。
    2. UTF-16:表示 16 位(2 字节)长的字符编码。
    3. UTF-32:表示 32 位(4 字节)长的字符编码。
  • 要访问 Unicode 字符,格式以转义序列 \u 开头,后跟 4 位十六进制值。
  • Unicode 字符的可能值范围是从 \u0000 到 \uFFFF。
  • 一些 Unicode 字符是
    \u00A9 表示版权符号 - ©
    \u0394 表示大写希腊字母 delta - Δ
    \u0022 表示双引号 - "

Java Unicode 示例

示例

编译并运行

输出

A
B

将 UTF-8 转换为 Unicode 的程序

UnicodeDemo.java

输出

Unicode Sytem©

在上面的代码中,创建了一个名为 UnicodeDemo 的类。开始时,使用 getBytes() 方法将 Unicode 字符串 str1 转换为 UTF-8 格式。之后,将字节数组再次转换为 Unicode,并在控制台上显示 newstr 的值。

Unicode 引起的问题

Unicode 标准被设计为表示 16 位字符编码。它本应能够使用基本数据类型 char 表示世界上所有的字符。但是 16 位编码只能表示 65,536 个字符,这不足以容纳世界上所有可用的字符。

因此,Unicode 系统扩展到 1,112,064 个字符。大于 16 位的字符称为增补字符,Java 使用一对 char 值来定义它们。

在本文中,我们讨论了编码的基本方法、Java 中的 Unicode 系统、Unicode 系统引起的问题以及演示 Unicode 系统用法的 Java 程序。


下一主题Java 运算符