notepad++ java编码,输出中文字符时,编译出错,如图,
修改编译命令为javac-encodingUTF-8Exerc02.java后问题解决,问一下,能更改notepad++设置来解决吗?毕竟一直这么编译有点麻烦......
修改编译命令为javac -encoding UTF-8 Exerc02.java后问题解决,
问一下,能更改notepad++设置来解决吗?毕竟一直这么编译有点麻烦... 展开
问一下,能更改notepad++设置来解决吗?毕竟一直这么编译有点麻烦... 展开
6个回答
2018-08-04
展开全部
由于JDK是国际版的,在编译的时候,如果我们没有用 -encoding
参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,WIN7,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac
-encoding gbk XX.java,当然就会出现不兼容的情况。
解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java
获取系统默认编码:
System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("file.encoding=" + System.getProperty("file.encoding")); System.out.println("Default Charset in Use=" + FileTools.getDefaultCharSet()); public static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writer.getEncoding(); try { writer.close(); } catch (IOException e) { e.printStackTrace(); } return enc; }
使用的时候最好是统一的格式,比如java文件保存格式也同样为 UTF-8 格式的
在命令行的中使用时先设置一个java变量
set JAVA_TOOL_OPTIONS=-Dfile.encoding=utf-8 -Duser.language=en -Duser.country=US
通过命令行对JAVA文件进行编译
javac -d ../ *.java
这样生成出来的.CLASS文件格式也同样为 UTF-8 编码的
同样在执行java或者jar包前,要设置一个临时的或者永久的变量
set JAVA_TOOL_OPTIONS=-Dfile.encoding=utf-8 -Duser.language=en -Duser.country=US
这样才可以保证你的程序在运行java时,使用的是UTF-8编码格式
参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,WIN7,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac
-encoding gbk XX.java,当然就会出现不兼容的情况。
解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java
获取系统默认编码:
System.out.println("Default Charset=" + Charset.defaultCharset()); System.out.println("file.encoding=" + System.getProperty("file.encoding")); System.out.println("Default Charset in Use=" + FileTools.getDefaultCharSet()); public static String getDefaultCharSet() { OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream()); String enc = writer.getEncoding(); try { writer.close(); } catch (IOException e) { e.printStackTrace(); } return enc; }
使用的时候最好是统一的格式,比如java文件保存格式也同样为 UTF-8 格式的
在命令行的中使用时先设置一个java变量
set JAVA_TOOL_OPTIONS=-Dfile.encoding=utf-8 -Duser.language=en -Duser.country=US
通过命令行对JAVA文件进行编译
javac -d ../ *.java
这样生成出来的.CLASS文件格式也同样为 UTF-8 编码的
同样在执行java或者jar包前,要设置一个临时的或者永久的变量
set JAVA_TOOL_OPTIONS=-Dfile.encoding=utf-8 -Duser.language=en -Duser.country=US
这样才可以保证你的程序在运行java时,使用的是UTF-8编码格式
展开全部
文件 另存为 命令,弹出对话框,最底下一行,保存按钮前边,不是可以选择编码吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首选项 新建 编码 可以更改默认 改成和你java一样的就行了
追问
改了,没用啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |