如何从Java中具有unicode的文件中读取数据?

如何从Java中具有unicode的文件中读取数据?,java,intellij-idea,unicode,java-11,Java,Intellij Idea,Unicode,Java 11,我有一个tsv文件,其中包含Unicode数据,如“pär Lagerkvist获得诺贝尔物理学奖” 但是当我用Java阅读它时,我收到了如下输出 “P�拉格克维斯特获得了诺贝尔物理学奖。” 我使用下面的代码读取文件 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8")); while ((st = br.readLine()) != null) {

我有一个tsv文件,其中包含Unicode数据,如“pär Lagerkvist获得诺贝尔物理学奖” 但是当我用Java阅读它时,我收到了如下输出 “P�拉格克维斯特获得了诺贝尔物理学奖。”

我使用下面的代码读取文件

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));
while ((st = br.readLine()) != null) {
    System.out.println(st);
}

我想你是在用Intellij的主意。在这种情况下,设置控制台编码

-Dfile.encoding=UTF-8

在Windows上,编辑
idea.exe.vmoptions
文件并添加上一行


有关详细信息,请参阅。

听起来好像读得很好。问题是您使用的终端似乎不知道如何输出Unicode。旁注:对于Java 11,您应该使用
try(var br=Files.newBufferedReader(path.get(fileName)){/*您的代码使用BufferedReader*/}
读取带有
BufferedReader
的UTF-8编码文件。