我写了一些简单的Java代码,从文本文件中读取字符串,将它们组合起来,然后写回去。(有关输出没有变化的简化版本,请参阅下面的代码片段)
问题是输入文件和输出文件中的特定字符(- 和 ...)不同。 破折号和省略号在输出文件中显示为特殊的、不可读的字符。 我不打算更改它们,我认为我应该使用一些特定的编码来避免这种情况。
我在Windows下运行。 奇怪的字符显示在多个编辑器(记事本、写字板和 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);
}
修订
版您的意见在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();
}
我有同样的问题,我所做的是:
- 首先,我
- 弄清楚所需的编码是什么,在我的情况下,我正在编辑一个现有文件并知道它的编码是什么,我键入下一个命令
文件 --MIME 编码.txt
然后知道编码标准是什么,你应该使用相同的标准创建BufferedWriter和BufferedReader
。public static void main(String[] args) throws Exception { File f = new File("in.txt"); FileInputStream stream = new FileInputStream(f); InputStreamReader conexion = new InputStreamReader(stream,"ISO-8859-1"); BufferedReader reader = new BufferedReader(conexion); String x; OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("in.txt"),"ISO-8859-1"); while((x = reader.readLine()) != null) { writer.write(x); writer.newLine(); } writer.close(); }
尝试在 BufferedReader 中使用 MimeType,如下所示:
InputStream myFileStream = new FileInputStream("in.txt");
BufferedReader inFile = new BufferedReader(new InputStreamReader(myFileStream , "utf-8"));
如果上述方法没有帮助,请尝试将 mime 类型值更改为其他 mime 类型,例如"utf-8"。如果仍然不起作用,请分享您的"in.txt"文件。