Java整行写文件的时候中文出现乱码,求兄弟们帮忙看看!

hcxy413 2011-01-06 11:55:38
代码大概如下:
--------------读
InputStreamReader read = new InputStreamReader (new FileInputStream(excel),inEncode);
BufferedReader br = new BufferedReader(read);
--------------写
File outFile = new File(excel.getPath().substring(0,excel.getPath().lastIndexOf("."))+".txt");
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(outFile),outEncode);
BufferedWriter bw = new BufferedWriter(write);
----------------------- 在将内容写到文件的时候出现乱码-------------------------------
bw.write(content);
bw.newLine();
-------------------------打印出来是正常的
System.out.println(content);

大家帮忙看下,感激不尽!
...全文
212 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-01-06
  • 打赏
  • 举报
回复
content怎么来的?
bw.write(new String(content.getBytes(), outEncode)); //or content.getBytes(inEncode)
bw.newLine();
hcxy413 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dyllove98 的回复:]

文件编码格式不正确吧?写的时候也设置下编码
[/Quote]

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(outFile),outEncode);
设置编码了啊,
你说的写的时候也要设置编码,怎么设置?能说详细点吗 谢啦
magong 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 hcxy413 的回复:]
-------------------------打印出来是正常的
System.out.println(content);

[/Quote]
其实你不能相信System.out.println
(虽然我们常说 眼见为实)

你需要确定文件中的字节二进制编码是否正确。有时编码是对的,看的方式不对而已。
Jlins 2011-01-06
  • 打赏
  • 举报
回复
文件编码格式不正确吧?写的时候也设置下编码
qybao 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hcxy413 的回复:]
String content = "";
while((content=br.readLine())!=null){
bw.write(content);
bw.newLine();
System.out.println(content);
}
[/Quote]
inEncode和outEncode是否一样的,如果不一样content就要转换编码
content = new String(content.getBytes(inEncode), outEncode); 
bw.write(content);
bw.newLine();

wander_java 2011-01-06
  • 打赏
  • 举报
回复
你可以试一下,新建一个.xls文件 然后改名为 .TXT文件,你就会发现已经乱码了 所以不是你程序的问题是你不应该强转文件名。。。
wander_java 2011-01-06
  • 打赏
  • 举报
回复
File outFile = new File(excel.getPath().substring(0,excel.getPath().lastIndexOf("."))+".txt");
你把文件强制转型了吧,不转型应该不会的乱了
roonten 2011-01-06
  • 打赏
  • 举报
回复
你在读写excel文件吗?
大蚂虾 2011-01-06
  • 打赏
  • 举报
回复
读写文件最好用字节流。。

还有把你的目的详细说下,把你完整的代码贴出来

你这样我都很难重复展现的你问题。。

还有7楼也太水了吧。。人家有说过是Web项目了么??文件的读写用毛毛的过滤器啊!~~
magong 2011-01-06
  • 打赏
  • 举报
回复
综合你顶楼和6楼的代码,你用一个字符集打开了源,用另一个字符集写了目标文件。
可以说:

只要你没有指错源文件的字符集(估计是的,因为print到控制台对的),那么你最终得到的文件中不是乱码。

请选择合适的字符集来查看目标文件。
tt986101dpc 2011-01-06
  • 打赏
  • 举报
回复
解决像这种中文乱码的问题,最好的办法还是过滤器。我个人感觉。。。
hcxy413 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qybao 的回复:]

content怎么来的?
Java code
bw.write(new String(content.getBytes(), outEncode)); //or content.getBytes(inEncode)
bw.newLine();
[/Quote]
String content = "";
while((content=br.readLine())!=null){
bw.write(content);
bw.newLine();
System.out.println(content);
}

是这样写的
aaby167 2011-01-06
  • 打赏
  • 举报
回复
重要看两点
第一 你写的时候是否设置字符编码
第二 你用文本编辑器打开看的时候 要设置一下文本编辑器的编码
例如 你用utf-8写的文件 如果文本编辑器此时的编码是ANSI 也是会看到乱码滴

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧