Bad/Strange 在 Java 中将文件从 CP1250 编码为 UTF-8

Bad/Strange encoding file from CP1250 to UTF-8 in Java

我对从 CP1250 到 UTF-8 的正确编码文件有问题。几乎所有字符都被正确转换,但字符“ň”和“Ř”没有(有“?”字符)。

在 Netbeans,我为项目设置了 UTF-8 编码。

文件中的测试字符串可以是"skříň SKŘÍŇ"。控制台输出:"skříĹ? SKĹ?ÍŇ"。输出不同于转换,例如 PHP。我到最后了。

我的代码:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("file-cp1250.txt"), "CP1250"));
while ((line = br.readLine()) != null) {
  line = new String(line.getBytes("UTF-8"), "CP1250");
  System.out.println(line);
}

谢谢指教

以下基本正确:

BufferedReader br = new BufferedReader(
    new InputStreamReader(new FileInputStream("file-cp1250.txt"), "CP1250"));
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

即InputStream的二进制数据指定为Windows/Code1250页,解码读取。 Java 字符串始终包含 Unicode(因此它可以组合所有脚本)。

然而,System.out 通常是依赖于平台的控制台,它可能不是 Cp1250,而是其他东西。 Unicode 可能会转换为 Cp1252,Microsoft 的 Latin-1。然后一个人正在考虑有一些错误。其中 System.out 根本无法使用。