OutputStream 输出有乱码

BufferedReaderbr=newBufferedReader(newInputStreamReader(con.getInputStream(),"GBK"));... BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"GBK"));
int temp=0;
OutputStream out=new FileOutputStream(new File("D:"+File.separator+"test"+File.separator+"output.xml"),true);
while((temp=br.read())!=-1){
out.write(temp);
}
out.flush();
out.close();
br.close();
output.xml输出中有乱码,怎么解决啊?
展开
 我来答
可以叫我表哥
2015-10-24 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464986
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
那并非乱码。

ObjectOutputStream.writeObject()的作用是把一个实例的对象以文件的形式保存到磁盘上,这个过程就叫Java对象的持久化。

而这个文件是以二进制的形式编写的,当你用文本编辑器将它打开,这些二进制代码与某个字符集映射之后,显示出来的东西就成了乱码。

即使输出的是一个String的对象,也是以该String对象的二进制编码的形式输出,而不是输出String对象的内容。
信黛娥3c
2013-01-29 · TA获得超过111个赞
知道小有建树答主
回答量:186
采纳率:0%
帮助的人:97.4万
展开全部
你输出时也采用gbk
出错的原因有可能是你 当前项目编码不是gbk
在你写入文件里时默认编码就为当前项目编码 就会出现乱码。
PrintWriter pw = new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(file), "gbk"));
追问
刚试了一下,用这个PrintWriter输出的时候,中文的部分还是乱码啊,
追答
你说了数据来源是 utf-8 编码的 的用gbk编码肯定乱码了
utf-8 3个字符一汉字
gbk 2个字符一个汉字
你吧读与写的编码都改为uft-8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
http_p
2013-01-29 · TA获得超过1095个赞
知道小有建树答主
回答量:733
采纳率:100%
帮助的人:586万
展开全部
你要检查
1. 你的inputStream里的字节流是不是由GBK编码的字符解码后的字节
2. 如果1没问题, 那么你的流中是可以由GBK编码后得到正确的字符的字节流
3. 如果上面都正确, 此时你的int temp 强转成char是正确的, 即是一个正确的字符(不是乱码)
4. 你用一个stream流来写文件.... temp是一个int, out是stream流, out.write(int)只会写int的低8位, 这里会丢失字节
5. 你如果用writer来写文件, 默认编码是系统的默认编码, 即ANSI, 也就是GBK, 是没有问题的, 但是如果你是工程, 有可能会使用工程的默认编码, 如果你工程的默认编码是UTF8那会出现乱码
6. 如果上述步骤都没有问题, 那么你写的那个文件必须预先是GBK编码, 即ANSI编码, 如果那个文件预先是UTF8编码, 会出现乱码
更多追问追答
追问
步骤1和步骤2都符合,工程是默认的编码utf-8的,如果改为GBK,会出现乱码的,输出的时候我不知道该怎么写了,out.xml中中文的都是乱码
追答
下午帮你再分析下 上班后 哈
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式