[英]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.