Java用\ u读取unicode
我的java程序正在从文本文件中读取unicode。 例如\uffff
..从java GUI查看没有问题,但是当我尝试打印出来时,所有的措辞都被覆盖了,是因为\u
,还是以其他方式避免覆盖的单词?
抱歉我的英语坏了..谢谢。
符号\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"
。
如您所知,’\ 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字符。
您还可以参考以下链接获取来自不同人的更多回复: 使用java读取unicode文本文件