java中filewriter中文乱码怎么解决?

java中filewriter中文乱码怎么解决?,第1张

要明白,用filewriter读取文件采取的是平台默认编码(视 *** 作系统而定)。当要写入的文本文件编码和平台默认编码不一致时,就会出现中文乱码的情况。这时可以使用filewriter 的父类OutputStreamWriter来读取。OutputStreamWriter允许用户指定编码方式,代码为:

FileInputStream fis=new FileInputStream("文件路径");

OutputStreamWriter osw=new OutputStreamWriter(fis,"文本文件的编码方式(ANSI,UTF-8...)")

osw.write()

这样写入的编码可以保证和源文本文件编码一致,就不会出现乱码了。

文件写入的时候有中文就很容易出现乱码,通常获取到的文件中通常都是“iso8859-1”格式,需要转换为“UTF-8”格式。

如:String str = new String(str.getByte("iso8859-1"),"UTF-8")进行下强制转换后在进行存储即可。

备注:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的强制转换不成功,依次进行这些格式的尝试,肯定是可以解决问题的。

原因是写入时使用的字符编码和期望的不一致导致的,因为JVM虚拟机启动时会因不同的参数使用不同的缺省字符编码。

解决办法:

如果你期望写到文件中的汉字是 GBK编码,可以:

1、写文件时,将字符串准换成 GBK编码的byte[], 如: myios.write( "汉字".getBytes("GBK"))

2、java 虚拟机启动时,增加 -DFile.encode=GBK 选项。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11408043.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存