怎么解决Outputstream乱码的问题
2个回答
展开全部
你要检查
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. 你的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编码, 会出现乱码
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
2018-06-28 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
那并非乱码。
ObjectOutputStream.writeObject()的作用是把一个实例的对象以文件的形式保存到磁盘上,这个过程就叫Java对象的持久化。
而这个文件是以二进制的形式编写的,当你用文本编辑器将它打开,这些二进制代码与某个字符集映射之后,显示出来的东西就成了乱码。
即使输出的是一个String的对象,也是以该String对象的二进制编码的形式输出,而不是输出String对象的内容。
ObjectOutputStream.writeObject()的作用是把一个实例的对象以文件的形式保存到磁盘上,这个过程就叫Java对象的持久化。
而这个文件是以二进制的形式编写的,当你用文本编辑器将它打开,这些二进制代码与某个字符集映射之后,显示出来的东西就成了乱码。
即使输出的是一个String的对象,也是以该String对象的二进制编码的形式输出,而不是输出String对象的内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询