我编写了一些简单的Java代码来从文本文件中读取字符串,将它们组合起来并将它们写回来。 (有关简化版本,请参见下面的代码段,输出没有变化)
问题是输入文件和输出文件中的特定字符( - 和...)不同。破折号和省略号在输出文件中显示为特殊的,不可读的字符。我不打算改变它们,我认为我应该使用一些特殊的编码来避免这种情况。
我在Windows下运行。奇怪的字符显示在多个编辑器(NotePad,写字板和Word)中,而不是破折号和省略号。
BufferedReader inFile = new BufferedReader(new FileReader("in.txt"));
PrintWriter out = new PrintWriter(new FileWriter("out.txt"));
String line;
while ((line=inFile.readLine()) != null)
{
out.println(line);
}
答案 0 :(得分:2)
<强> REVISION 强>
您的输入位于ANSI windows-1252
所以这应该可以解决问题:
public static void main(String[] args) throws Exception {
File f = new File("in.txt");
FileInputStream stream = new FileInputStream(f);
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, Charset.forName("windows-1252")));
String x;
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("testing.txt")));
while((x = reader.readLine()) != null) {
writer.write(x);
writer.newLine();
}
writer.close();
}
答案 1 :(得分:1)
我有同样的问题,我做的是:
file --mime-encoding in.txt
然后知道什么是编码标准,你应该用相同的标准创建BufferedWriter和BufferedReader
{{1}}
答案 2 :(得分:0)
尝试在BufferedReader中使用MimeType,如下所示:
InputStream myFileStream = new FileInputStream("in.txt");
BufferedReader inFile = new BufferedReader(new InputStreamReader(myFileStream , "utf-8"));
如果上面没有帮助,请尝试将mime类型值更改为其他mime类型,例如“UTF-8”。如果仍然无效,请分享您的“in.txt”文件。