首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
java默认编码
简介: 在进行流操作时默认编码问题以及解决办法。我们常用的字符集为:iso-8859-1 GBK GB2312 GB18030 UTF-8

我们在进行文件操作,或者网络流操作,以及字符串转字节或字节转字符串等操作的时候可以不设置字符集,在使用默认字符集的情况下看似没有问题却给我们整个项目埋下一个定时炸弹。

 

我用下面的举例来引爆它。

正常开放情况下我们基本上都不会出现字符串乱码的问题,但是一到测试环境上就出现乱码,而且感觉好像是莫名其妙无从下手,我们怎么办?

 答:开发时如果你读取文件处理时不设置编码那么java会去读取一个file.encoding的环境变量,这个环境变量的值就是数据转换时使用的默认值,了解了这点那么问题就很简单的重现了。文件编码GBK时本地默认编码为GBK,这个时候不会出现问题,但是进入测试环境后测试环境的默认编码可能是IOS-8859-1或其他非GBK编码,这个时候就会出现读到的数据是乱码(如果你文件是纯英文那当我什么都没有说)。

这个问题一般可以这样解决

  1. 设置系统的字符集
  2. 在 jvm的启动参数里设置默认字符例如: -Dfile.encoding="UTF-8"
  3. 以上两个方法理论上可以解决我们的问题,但是解决了我们的问题以后可能会导致其他应用产生问题。所以最好的办法还是在写代码是严谨一点,在做字符串转换等操作的时候设置上字符集。

我们常用的字符集为:iso-8859-1 GBK GB2312 GB18030 UTF-8

 

最近更新