java 按行读取utf-8文件且处理每行string,将处理后的string写到一个新的utf-8格式文件,不能有乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 按行读取utf-8文件且处理每行string,将处理后的string写到一个新的utf-8格式文件,不能有乱码相关的知识,希望对你有一定的参考价值。

希望给一份代码,我写了一个读取乱码,写入也是乱码, 文件格式是xml,新写入的文件也必须按行写入(要换行)
String encoding="UTF-8";
File file=new File(filePath);
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null)
//写入文件(找了一个换行的不能用
read.close();
有人有写入的吗,将读出来的每行处理过的字符串写入到utf-8文件里面吗

代码没问题,检测一下你的xml文件是否是真正的utf-8编码的文件,不要说,xml文件内容里声明是utf-8编码就是utf-8编码。或者把encoding="UTF-8",改为encoding="GBK",看一下乱不乱码,如果不乱码,说明你的xml文件其实是gbk编码。 参考技术A

/*

把你的代码贴出来吧,好知道自己错在什么地方, 这样印象也深刻一些,才能真的弄懂了,

学习java不建议做伸手党

------------------------------------------------

*/

BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(new File("filepath")), "UTF-8")); // read encoding
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("filepath")), "UTF-8")); //writer  encoding
String str = null;while ((str = br.readLine()) != null) 
println(str);
bw.write(str);
bw.newLine();// 换行
bw.flush();
str = br.readLine();

br.close();
bw.close();

参考技术B String tag = "UTF-8";
String str = "读取乱码";
String tempStr = new String(str.getBytes("ISO-8859-1"), tag);


BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(
                    fileName), tag));

追问

有写入的吗?
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);;
writer.close();
这个追加写入后打开, 格式乱了,不是按写入换行的。

追答在windows下  使用\\r\\n换行

追问

String nextLine = System.getProperty("line.separator"); 系统的 换行
但是 没法定义写后的文件格式, 且 只能用记事本打开是正常的, ue 打开 是十六进制的dos 文件,且转换格式为utf-8是中文乱码。

追答I don't know

追问

现在可以了,但是读取文件的时候怎么做到dos 和 u8格式的都能正确的读取呢

本回答被提问者和网友采纳

水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符

#从文件中读取数据
with open ('data.txt') as file_object:
    lines = file_object.read().splitlines()#去除每行末尾的回车符

 

以上是关于java 按行读取utf-8文件且处理每行string,将处理后的string写到一个新的utf-8格式文件,不能有乱码的主要内容,如果未能解决你的问题,请参考以下文章

java 按行读取txt文件的数字

利用java.nio的FileChannel能够实现按行读取文件吗?(解决了)

水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符

“java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”?

水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符

水文日常~~Python如何按行读取txt文件中的数据并去除每行末尾的回车符