文档

Java™ 教程-Java Tutorials 中文版
转换非 Unicode 文本
Trail: Internationalization
Lesson: Working with Text

转换非 Unicode 文本

在 Java 编程语言中,char 值表示 Unicode 字符。Unicode 是一种支持世界主要语言的 16 位字符编码。你可以在 Unicode Consortium Web site 上了解有关 Unicode 标准的更多信息。

很少有文本编辑器支持 Unicode 文本输入。我们用来编写本节代码示例的文本编辑器仅支持 ASCII 字符,限制为 7 位。要指示无法用 ASCII 表示的 Unicode 字符,例如 ö,我们使用 \uXXXX 转义序列。转义序列中的每个 X 都是十六进制数字。以下示例显示如何使用转义序列指示 ö 字符:

String str = "\u00F6";
char c = '\u00F6';
Character letter = new Character('\u00F6');

世界各地的系统使用各种字符编码。目前,这些编码很少符合 Unicode。因为你的程序需要 Unicode 中的字符,所以它从系统获取的文本数据必须转换为 Unicode,反之亦然。当文本文件的编码与 Java 虚拟机的默认文件编码匹配时,文本文件中的数据将自动转换为 Unicode。你可以通过创建并使用 OutputStreamWriter 询问其规范名称来标识默认文件编码:

OutputStreamWriter out = new OutputStreamWriter(new ByteArrayOutputStream());
System.out.println(out.getEncoding());

如果默认文件编码与你要处理的文本数据的编码不同,则必须自己执行转换。处理来自其他国家/地区或计算平台的文本时,你可能需要执行此操作。

本节讨论用于将非 Unicode 文本转换为 Unicode 的 API。在使用这些 API 之前,你应该验证是否支持要转换为 Unicode 的字符编码。支持的字符编码列表不是 Java 编程语言规范的一部分。因此,API 支持的字符编码可能随平台而变化。要查看 Java Development Kit 支持哪些编码,请参阅 Supported Encodings 文档。

下面的材料描述了将非 Unicode 文本转换为 Unicode 的两种技术。你可以将非 Unicode 字节数组转换为 String 对象,反之亦然。或者,你可以在 Unicode 字符流和非 Unicode 文本的字节流之间进行转换。

字节编码和字符串

本节介绍如何将非 Unicode 字节数组转换为 String 对象,反之亦然。

字符和字节流

在本节中,你将学习如何在 Unicode 字符流和非 Unicode 文本字节流之间进行转换。


Previous page: Converting Latin Digits to Other Unicode Digits
Next page: Byte Encodings and Strings