转换非 Unicode 文本

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

当前很少有文本编辑器支持 Unicode 文本 Importing。我们用来编写本节代码示例的文本编辑器仅支持 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 开发工具包支持的编码,请参见Supported Encodings文档。

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

字节编码和字符串

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

字符和字节流

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