繁体   English   中英

Java用\\ u读取unicode

[英]Java read unicode with \u

我的Java程序正在从文本文件读取unicode。 例如\￿ ..从Java GUI中查看是没有问题的,但是当我尝试打印时,所有措词都被覆盖了,是因为\\u\u003c/code>还是其他避免单词被覆盖的方法?

对不起,我的英语不好..谢谢。

\\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的这老实用工具类使用该平台的编码。

如果该文本记为\€ ,那将是不规则的,并且将被原样打印(反斜杠,u,20AC),

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

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

但是,如果文本文件中已经存在此类国际字符,那么您当然可以阅读。 Java提供了class Charset ,请参阅以下网址的API: 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字符。

您还可以参考下面的链接,以获取其他人的更多答复: 使用Java读取Unicode文本文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM