文档

Java™ 教程
隐藏目录
转换非Unicode文本
路径:国际化
课程:处理文本

转换非Unicode文本

在Java编程语言中,char值代表Unicode字符。Unicode是一种16位字符编码,支持世界上的主要语言。您可以在Unicode联盟网站了解更多关于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开发工具包支持哪些编码,请参阅Supported Encodings文档。

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

字节编码和字符串

本节将向您展示如何将非Unicode字节数组转换为String对象,反之亦然。

字符流和字节流

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


上一页: 将拉丁数字转换为其他Unicode数字
下一页: 字节编码和字符串