# 转换非 Unicode 文本

> 原文： [https://docs.oracle.com/javase/tutorial/i18n/text/convertintro.html](https://docs.oracle.com/javase/tutorial/i18n/text/convertintro.html)

在 Java 编程语言中，`char`值表示 Unicode 字符。 Unicode 是一种支持世界主要语言的 16 位字符编码。您可以在 [Unicode Consortium 网站](http://www.unicode.org/)上了解有关 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](https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html) 文档。

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

## [字节编码和字符串](string.html)

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

## [字符和字节流](stream.html)

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