Java 使用UTF8字符集读取的希腊字符打印为࿽࿽࿽࿽;

Java 使用UTF8字符集读取的希腊字符打印为࿽࿽࿽࿽;,java,encoding,utf-8,Java,Encoding,Utf 8,我正在尝试读取一个包含utf8格式的希腊单词的文件 使用以下代码 reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8")); while((line = reader.readLine()) != null){ tokenizer = new StringTokenizer(line, delimiter); while(tokenizer.hasMoreTokens()){

我正在尝试读取一个包含utf8格式的希腊单词的文件 使用以下代码

reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
while((line = reader.readLine()) != null){
  tokenizer = new StringTokenizer(line, delimiter);
  while(tokenizer.hasMoreTokens()){
    currentToken = tokenizer.nextToken();
    map.put(currentToken, 1);
  }
}
在我寻找的每个论坛上,我都看到这个
新的FileInputStream(file),“UTF8”)
但是打印的结果仍然是这样的
����

p、 当我从代码内部打印一个包含希腊单词的变量时,打印成功,这意味着问题出在文件读取上

有什么想法吗?

Java中没有“UTF8”字符集。正确的字符集名称为“UTF-8”:

或者使用以下选项来避免任何歧义:

new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))

也就是说,确保该文件实际上是UTF-8编码的。如果它前面有一个UTF-8 BOM表,您必须将其从文件本身中剥离,或者在读取文件时手动跳过它,然后再读取行。Java读者不会自动识别或跳过BOM。

这里有些人过于专业。我再次提醒你们,我们是人类,不是编译器!我在这里再次“权力”你删除的职位!我非常自豪地出生在民主的诞生地,尊重其他讨论者!你不尊重任何“大师”们


PS:是的,我知道你再次传播了反对票,但谁真的在乎呢?

用这个进行适当的对话-这个是从iso-8859-1到utf-8:

public String to_utf8(String fieldvalue) throws UnsupportedEncodingException{

        String fieldvalue_utf8 = new String(fieldvalue.getBytes("ISO-8859-1"), "UTF-8");
        return fieldvalue_utf8;
}

使用UTF-8而不是UTF8有什么帮助吗?-->显然,如果您使用创建
BufferedReader
,它不起作用吗?不幸的是,这两个想法都不起作用。您是否绝对确定该文件是UTF-8编码的?是的,该文件是UTF-8编码的。如前所述,这也不起作用
public String to_utf8(String fieldvalue) throws UnsupportedEncodingException{

        String fieldvalue_utf8 = new String(fieldvalue.getBytes("ISO-8859-1"), "UTF-8");
        return fieldvalue_utf8;
}