Java使用UTF-8或GBK编码后还是乱码问题的解决办法
作者:奋斗的阿杰
在java中处理字符时,经常会发生乱码,下面这篇文章主要给大家介绍了关于Java使用UTF-8或GBK编码后还是乱码问题的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
前言
大家在开发中可能经常遇到将String字符串转为byte[]的场景,为了避免中文乱码,一般指定字符集为GBK或UTF-8来进行编码以及解码,但是如果使用不当,同样会造成字符集乱码问题。
主要原因是进行编码以及解码的字符集不一致导致
所以,在解决字符集乱码问题时一般情况下会显示指定编码和解码字符集。
// 编码 byte[] bytes = “中文”.getBytes(“UTF-8”); // 解码 new String(bytes,“UTF-8”);
不显式指定时一般会使用默认字符集进行编码或解码,此时需要确保使用的获取默认字符集的方法一样。
// 编码 获取默认字符集方法为:Charset.defaultCharset().name() byte[] bytes =“中文”.getBytes(); // 解码 获取默认字符集方法为:Charset.defaultCharset().name() new String(bytes);
以下列出两种获取默认字符集的方法及区别:
Charset.defaultCharset().name();
System.getProperty("file.encoding")
两者的区别是:
- **Charset.defaultCharset()**通过在JVM启动时通过
-Dfile.encoding=UTF-8
参数来进行设置。此方式只支持在jvm启动时设置一次,不支持在运行期修改。 - System.getProperty(“file.encoding”) 获取的是操作系统的编码,可以通过
System.setProperty("file.encoding","UTF-8")
进行修改(此修改不会影响操作系统,重启jvm后丢失),支持在运行期修改。
总结
到此这篇关于Java使用UTF-8或GBK编码后还是乱码问题的解决办法的文章就介绍到这了,更多相关Java字符集乱码问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!