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