确定文件编码并打印umlaute

时间:2019-03-13 21:49:09

标签: java encoding

我有一个txt文件。我不确定此文件的编码。可能是EBCDIC。我对Umlaute(äöü,ÜÄÖ)有疑问 例如 例如: 显示:慕尼黑 应该是:München 测试文件的网址:http://wyslijto.pl/plik/yiewa11y3p

java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("/Downloads/test.txt")));

//        BufferedReader in = new BufferedReader(
//                new InputStreamReader(
//                        new FileInputStream("/Downloads/test.txt"), Charset.forName("windows-1252")));
        String str;
        while ((str = in.readLine()) != null) {
            System.out.println(str);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

不幸的是,没有某种方法可以在不知道最初用于创建文件的内容的情况下检测编码。我将向您介绍此question,它对如何进行智能猜测真正的编码有很多建议。

一旦您知道了编码(这是最困难的部分),它就很简单。例如,如果编码为UTF-8,请对您的InputStreamReader使用UTF-8字符集:

BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("/Downloads/test.txt"), StandardCharsets.UTF_8));

通常,受支持的字符集为:

  • ISO_8859_1
  • US_ASCII
  • UTF_16
  • UTF_16BE
  • UTF_16LE
  • UTF_8