Java Files.readAllLines()无法正确读取所有字符

Java Files.readAllLines()无法正确读取所有字符,java,java-io,Java,Java Io,我有一个简单的文本文件,其中只有一个字符是'≤'. 没有别的了。此文件具有UTF-8编码。 当我使用Files.readAllLines()方法读取此文件时,字符显示为问号“?” try (FileWriter fw = new FileWriter(new File(file, "f.txt")); PrintWriter writer = new PrintWriter(fw);) { List<

我有一个简单的文本文件,其中只有一个字符是'≤'. 没有别的了。此文件具有UTF-8编码。 当我使用Files.readAllLines()方法读取此文件时,字符显示为问号“?”

        try (FileWriter fw = new FileWriter(new File(file, "f.txt"));
                PrintWriter writer = new PrintWriter(fw);) {
            List<String> lines = Files.readAllLines(deProp.toPath());
            for (String line : lines) {
                System.out.println(line);
                    writer.write(line);
                    writer.println();
            }
try(FileWriter fw=newfilewriter(新文件(文件,“f.txt”));
PrintWriter=新的PrintWriter(fw);){
List line=Files.readAllLines(deProp.toPath());
用于(字符串行:行){
系统输出打印项次(行);
作者:写(行);
writer.println();
}
在我的示例中,我试图将该行打印到控制台和新文件中。在这两种情况下,都会显示问号

有什么建议可以解决这个问题吗?

已经使用了UTF-8(请参阅链接文档)。如果您使用的是
文件.readAllLines(path,charset)
变体,那么,当然可以将
UTF-8
作为字符集传递(例如使用
StandardCharsets.UTF\u 8)

假设您正在使用短版本或通过UTF-8,那么错误不在于java,而在于您的设置

要么文件不包含≤ 在UTF-8中,或者您正在用java将其打印到不显示此类符号的位置(例如,因为您的字体没有该符号,并使用?作为“我的字体文件中没有此符号”的占位符符号;它通常是一个方框符号),或者您将输出发送到一个错误地认为发送的不是UTF-8的地方。

已使用UTF-8(请参阅链接文档)。如果您使用的是
文件.readAllLines(path,charset)
variant,那么当然可以将
UTF-8
作为字符集传递(例如使用
StandardCharsets.UTF\u 8)

假设您正在使用短版本或通过UTF-8,那么错误不在于java,而在于您的设置


要么文件不包含≤ 在UTF-8中,或者您正在用java将其打印到不显示此类符号的位置(例如,因为您的字体没有该符号,并使用?作为“我的字体文件中没有此符号”的占位符符号;它通常是一个方框符号),或者您将输出发送到一个错误地认为发送的不是UTF-8的地方。

文件类e.i的静态方法

public static List<String> readAllLines(Path path) throws IOException

文件可能包含一些垃圾或UTF-8字符集格式以外的内容。请手动检查文件中的文本一次:p

文件类e.i的静态方法

public static List<String> readAllLines(Path path) throws IOException

文件可能包含一些垃圾或UTF-8字符集格式以外的内容。请手动检查文件中的文本一次:p

请提供一个。问题出在您的控制台中,还是出在
f.txt
中?我注意到您没有在
FileWriter
中指定字符集,这意味着它使用的是平台默认值,这不一定是UTF-8。是的,实际上问题出在控制台上,我用OutputStreamWriter更改了写入文件的方式,并将字符集设置为UTF-8。现在可以工作了。请提供一个。问题出在控制台上,还是出在
f.txt
中?我注意到您没有在
FileWriter
中指定字符集,这意味着它使用的是平台默认值,不一定是UTF-8。是的,实际上问题出在控制台上,我用OutputStreamWriter更改了写入文件的方式,并将字符集设置为UTF-8。现在可以了。你是对的。Eclipse控制台似乎没有正确显示此字符。我用h OutputStreamWriter writer=新的OutputStreamWriter(新文件OutputStream(文件“f.txt”)),StandardCharsets.UTF_8),所以它现在可以工作:)啊。不要使用FileWriter;它使用的是“平台默认编码”,这是你从来都不想使用的。问题也不在于eclipse。问题是。你是对的。eclipse控制台似乎没有正确显示此字符。我用OutputStreamWriter writer=新的OutputStreamWriter(新的FileOutputStream(新文件,f.txt)),StandardCharsets.UTF_8,所以它现在可以工作:)啊。不要使用FileWriter;它使用的是“平台默认编码”,这是你从来都不想使用的。问题也不在于eclipse。就是这样。