FileInputStream fin = new FileInputStream("D:\\testout.txt");
BufferedInputStream bin = new BufferedInputStream(fin);
int i;
while((i = bin.read())!=-1) {
System.out.print((char)i);
}
bin.close();
fin.close();
输出:ÿþGreat
我检查了文件testout.txt,它只包含一个单词,即Great
。
答案 0 :(得分:2)
当您使用文字时,您应该使用阅读器。例如
try(
BufferedReader reader = Files.newBufferedReader(
Paths.get("D:\\testout.txt"),
StandardCharsets.UTF_8)
){
int i;
while((i = reader.read())!=-1) {
System.out.print((char)i);
}
}
答案 1 :(得分:1)
这很可能是Byte order mark,可选但允许使用UTF-8字符编码的文件。一些程序(例如记事本)说明了这种可能性,有些则没有。默认情况下,Java不会删除它们。
解决此问题的一个实用程序是Apache Commons IO的BOMInputStream。
此外,当您将其保存为UTF-8时,记事本将在文件中写入字节顺序标记。
答案 2 :(得分:1)
ÿþ是UTF-16中的byte order mark。您可以使用java.io将字符串转换为UTF-8,如解释here。
您还可以参考answer了解更多详情。
答案 3 :(得分:0)
请使用utf-8字符编码来解决此类问题。 byte [] utf_8 = input.getBytes(" UTF-8"); //将unicode字符串转换为UTF-8 String test = new String(utf_8);