设置一下环境变量就好了,如果只是想临时设置一下,直接输入exportlang=EN_us,就好了,如果想长期生效就需要修改环境变量的参数文件了,不清楚你现在用的是那个 *** 作系统,这里介绍一下readhat:bash_profilesuse::profile如果用户下没有这些文件,也可以自己新建查看环境变量:echo$LANG使刚修改的环境变量生效:sourceprofile
由于JDK是国际版的,在编译的时候,如果我们没有用 -encoding
参数指定我们的JAVA源程序的编码格式,则javacexe首先获得我们 *** 作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得 *** 作系统的fileencoding参数(它保存的就是 *** 作系统默认的编码格式,如WIN2k,WIN7,它的值为GBK),然后JDK就把我们的java源程序从fileencoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成class类文件,此时class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的 *** 作系统中形成我们见到的class文件。对我们来说,我们最终获得的class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由fileencoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac
-encoding gbk XXjava,当然就会出现不兼容的情况。
解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XXjava
获取系统默认编码:
Systemoutprintln("Default Charset=" + CharsetdefaultCharset()); Systemoutprintln("fileencoding=" + SystemgetProperty("fileencoding")); Systemoutprintln("Default Charset in Use=" + FileToolsgetDefaultCharSet()); public static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writergetEncoding(); try { writerclose(); } catch (IOException e) { eprintStackTrace(); } return enc; }
使用的时候最好是统一的格式,比如java文件保存格式也同样为 UTF-8 格式的
在命令行的中使用时先设置一个java变量
set JAVA_TOOL_OPTIONS=-Dfileencoding=utf-8 -Duserlanguage=en -Dusercountry=US
通过命令行对JAVA文件进行编译
javac -d / java
这样生成出来的CLASS文件格式也同样为 UTF-8 编码的
同样在执行java或者jar包前,要设置一个临时的或者永久的变量
set JAVA_TOOL_OPTIONS=-Dfileencoding=utf-8 -Duserlanguage=en -Dusercountry=US
这样才可以保证你的程序在运行java时,使用的是UTF-8编码格式
以上就是关于linux查看系统默认编码格式该怎么 *** 作全部的内容,包括:linux查看系统默认编码格式该怎么 *** 作、notepad++ java编码,输出中文字符时,编译出错,如图,、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)