Java用\ u读取unicode

时间:2013-09-27 09:43:54

标签: java text

我的java程序正在从文本文件中读取unicode。例如\uffff .. 从java GUI查看是没有问题的,但是当我尝试打印时,所有措辞都被覆盖了,是因为\u还是其他任何方法来避免覆盖这些词?

抱歉我的英语坏了.. 感谢。

2 个答案:

答案 0 :(得分:2)

表示法\uXXXX主要仅出现在 .java .properties 文件中。在那里它被读作Unicode代码点。 Unicode文本(=使用所有类型的特殊字符)通常使用UTF-8格式(尽管有时也使用UTF16LE和UTF16BE)。

本文如下:

BufferedReader in = new BufferedReader(
        new InputStreamReader(new FileInputStream(file), "UTF-8"));

和(好的顺序)写成

new OutputStreamWriter(new FileOutputStream(file), "UTF-8")
new PrintWriter(file, "UTF-8")

特别是使用FileReader和FileWriter,旧的实用程序类使用平台编码。

如果文本会计算\u20AC,那将是不规则的,并且将按字面打印(反斜杠,u,20AC),

现在,如果您的意思是Unicode字符超出正常的ASCII范围存在问题,例如欧元符号,那么它可能是字体或需要转换的问题,比如Windows Latin 1 :"Windows-1252"

答案 1 :(得分:1)

正如您所知,'\ u'也称为Unicode转义用于表示国际字符。因此,您无法从键盘本身输入该字符,您需要使用unicode序列来生成该字符。

但是,如果这样的国际字符已经存在于文本文件中,那么您可以阅读它。 Java提供class Charset,请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/nio/charset/Charset.html

上的API

您应该使用Java中的Reader / Writer API来处理这些字符。因为它支持16位字符,其中包括除字母和ASCII之外的所有不同语言。其中InputStream / OutputStream仅支持8位字符。

所以要阅读这些字符,你可以使用:

BufferedReader in = new BufferedReader(
        new InputStreamReader(new FileInputStream(file), "UTF-8"));

此处UTF-8是CharSet。

同样可以打印数据。但是在你打印的地方,你的编辑器(打印角色的地方)必须支持unicode字符。

您还可以参考以下链接,获取来自不同人群的更多回复: Read unicode text files with java