Java 确定文件编码并打印umlaute
我有一个txt文件。我不确定这个文件的编码。可能是EBCDIC。我对乌姆劳特有意见(äöü,ÜÄÖ) 例如 例如: 显示:M恩钦 应该是:门钦 测试文件的Url:Java 确定文件编码并打印umlaute,java,encoding,Java,Encoding,我有一个txt文件。我不确定这个文件的编码。可能是EBCDIC。我对乌姆劳特有意见(äöü,ÜÄÖ) 例如 例如: 显示:M恩钦 应该是:门钦 测试文件的Url: 不幸的是,如果不知道最初创建文件时使用了什么,就无法确定检测编码的方法。我将向您介绍这一点,它有很多建议,可以让您智能地猜测编码到底是什么 一旦你知道了编码(这是最困难的部分),它就简单了。例如,如果编码为UTF-8,请将UTF-8字符集与您的: 通常,支持的字符集包括: ISO_8859_1 美国ASCII码 UTF_16 UT
不幸的是,如果不知道最初创建文件时使用了什么,就无法确定检测编码的方法。我将向您介绍这一点,它有很多建议,可以让您智能地猜测编码到底是什么 一旦你知道了编码(这是最困难的部分),它就简单了。例如,如果编码为UTF-8,请将UTF-8字符集与您的: 通常,支持的字符集包括:
- ISO_8859_1
- 美国ASCII码
- UTF_16
- UTF_16BE
- UTF_16LE
- UTF_8
文件
说:“Downloads/test.txt:UTF-8 Unicode(带BOM)文本,没有行终止符”,因此@vs97的答案应该有效。只有当它实际上是UTF-8时才有帮助。OP说他们不知道编码是什么。(而Files.newbufferedeader
将是执行上述操作的更简单方法,因为默认情况下使用UTF-8。)问题在于字符是UTF-8。可能是双重编码,所以需要两次解码。
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);
}
}
}
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream("/Downloads/test.txt"), StandardCharsets.UTF_8));