返回信息流情况:
FileOutputStream fos = new FileOutputStream("test.txt");
fos.write("test".getByte()); //实际不是写test
使用以上方式向txt文件中写字节(实际有8次循环写了大概5k的字节), 默认的编码方式为ANSI,但实际写到某次循环时,打开txt文件查看发现为乱码,编码方式也由默认的ANSI变为Unicode。而用写字板打开则正常。
问题:
楼主单步调试过,所以发现在某次循环时test.txt的编码方式由ANSI变为Unicode,不解为什么txt编码方式会变?这应该就是导致用记事本打开为乱码的原因吧?
这是一条镜像帖。来源:北邮人论坛 / java / #29798同步于 2014/5/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java使用FileOutputStream出现的奇怪问题
kingkongman
2014/5/7镜像同步21 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
= =。当时脑子被门夹了。。。 可是为什么用FileOutputStream会出现这样的问题呢?感觉像是输出以GBK编码方式输出,却被txt以Unicode来显示导致的问题?
【 在 nuanyangyang 的大作中提到: 】
: 为什么不用FileWriter呢?
我就崇拜nuanyangyang这样简单暴力的答法..
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 为什么不用FileWriter呢?
崇拜+1, 但是如果可以详解下问题那就更好了!
【 在 icyfox 的大作中提到: 】
: 我就崇拜nuanyangyang这样简单暴力的答法..
:
【 在 kingkongman 的大作中提到: 】
: = =。当时脑子被门夹了。。。 可是为什么用FileOutputStream会出现这样的问题呢?感觉像是输出以GBK编码方式输出,却被txt以Unicode来显示导致的问题?
getBytes()是用默认的编码方法编码。具体说你的“默认编码”是哪个编码,应该和你的具体系统有关。
问下,getByte()这个函数是哪个包哪个类里面的?我只找到了有getBytes()函数,http://www.myexception.cn/program/1514375.html
少打了个s。 getBytes()使用系统默认编码GBK我懂,只是不解为什么输出到某次循环时编码方式变为Unicode
【 在 slkobe 的大作中提到: 】
问下,getByte()这个函数是哪个包哪个类里面的?我只找到了有getBytes()函数,http://www.myexception.cn/program/1514375.html