使用java读取unicode文本文件

Ron*_*fin 12 java string unicode ascii

真的很简单的问题.我需要在Java程序中读取Unicode文本文件.

我习惯使用普通的ASCII文本与BufferedReader FileReader组合,这显然不起作用:(

我知道我可以使用Buffered Reader以"传统"方式读取字符串,然后使用以下内容进行转换:

temp = new String(temp.getBytes(), "UTF-16");
Run Code Online (Sandbox Code Playgroud)

但有没有办法将Reader包装在'转换器'中?

编辑:文件以FF FE开头

obj*_*cts 16

你不会包装Reader,而是使用InputStreamReader包装流.然后,您可以使用当前使用的BufferedReader包装它

BufferedReader in = new BufferedReader(new InputStreamReader(stream, encoding));
Run Code Online (Sandbox Code Playgroud)

  • 我想读希伯来字母,我会用"编码"代替什么? (2认同)
  • 回答我自己的问题,它是"UTF-8" (2认同)

Mac*_*rse 8

查看http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStreamReader.html

我会用以下内容读取源文件:

Reader in = new InputStreamReader(new FileInputStream("file"), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)


McD*_*ell 7

一些说明:

  • "UTF-16"编码可以读取标有BOM的小端或大端编码文件; 请参阅此处获取Java 6编码列表; 没有明确说明在使用"UTF-16"编写时会使用什么字节顺序 - 它似乎是大端的 - 因此您可能希望在保存数据时使用"UnicodeLittle"
  • 使用String类编码/解码方法时要小心,特别是使用标记的可变宽度编码(如UTF-16) - 仅在整个数据上使用它们
  • 正如其他人所说,通常最好通过使用InputStreamReader包装InputStream来读取字符数据.您可以使用StringBuilder或类似的缓冲区将输入连接到单个String中.