欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java的sun.jnu.encoding有什么用

程序员文章站 2022-07-13 17:10:03
...
目前看到的影响有两个:影响类名的读取和Main方法参数的读取。

1 影响类名的读取
设置 -Dsun.jnu.encoding=gbk
public class 中文 {
 
    public static void main(String[] args) throws Exception {
 
    }
}
//这个会运行报错:
Exception in thread "main" java.lang.ClassNotFoundException: com.涓枃
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)


2 影响Main方法参数的读取
设置 -Dsun.jnu.encoding=gbk  main方法的运行参数:中文
public class Test {
    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}
//运行结果:涓枃




有资料说是会影响系统变量的读取,实际上在我的mac是不会的
-Dsun.jnu.encoding=gbk -Dtest=中文 ,设置系统的环境变量:test=中文
public static void main(String[] args) throws  Exception{   
   System.out.println(System.getProperties().getProperty("test"));
   System.out.println(System.getenv().get("test"));
}


有人说会影响文件名,时间是在我的mac上是不会的,可能用这个代码自己试试,https://gist.github.com/happygiraffe/1456701

除了-Dsun.jnu.encoding=强制设置,在哪里读取的默认呢;就是系统的LANG环境变量
echo $LANG       我的mac上的结果是 zh_CN.UTF-8
相关标签: sun.jnu.encoding