java的String的乱码浅析

时间:2022-10-20 11:33:26
  • Java又乱码了,怎么办;乱码了说明编码与解码不一致导致。所以使用统一的编码方式即可。
  • 本文并不是一定能解决乱码,本文主要用来了解jvm默认编码,以及string编码与解码一致性问题。
  1. jvm的默认编码
     System.out.println(System.getProperty("file.encoding"));
    // Eclipse的console:UTF-8

    file.encoding 属性由主程序启动时的是否设置默认编码有关,这会涉及【java -D 配置系统属性】。
    即若启动程序使用了 -Dfile.encoding=UTF-8,则执行获取jvm默认编码则为utf-8,若启动没有设置
    该参数,则file.encoding 属性就与操作系统的默认编码方式一致。
    1.1 通过eclipse执行得到 utf-8,这是由于eclipse在执行程序时,会自动加入-Dfile.encoding参数。
    1.2 直接使用终端直接执行java 启动执行main打印将会是OS的默认编码。

  2. string编码与解码

     byte[] sources = "欢迎进入程序员世界!".getBytes();
    System.out.println(new String(sources, "utf-8"));
    // console:欢迎进入程序员世界!

    getBytes() 无参方法是用jvm默认编码进行得到字节数组,若jvm默认编码也是utf-8 ,则不会乱码。

  3. 问题来了,若是得到一个byte[] ,没有对应的解码说明,如何对其进行编码显示。
    这个问题我是没解决,但是可以在代码中避免这个问题。