我对从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);
}
感谢您的建议
答案 0 :(得分:3)
以下主要是正确的:
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream("file-cp1250.txt"), "CP1250"));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
即InputStream的二进制数据被指定为Windows / Code Page 1250,并通过解码读取。 Java String始终保持Unicode(因此它可以组合所有脚本)。
然而,System.out
通常是平台相关的控制台,可能不是Cp1250,而是其他东西。 Unicode可能会转换为Cp1252,Microsofts Latin-1。然后有人想到有一些bug。无法使用System.out的地方。