在存在中文的情况下编译出警告-编码 GBK 的不可映射字符

 
编译时出现警告
当代码中含有中文时编译代码可能会出现:警告: 编码 GBK 的不可映射字符。这是因为由于 JDK 是国际版的,在编译的时候,如果我们没有用 -encoding 参数指定我们的 JAVA 源程序的编码格式,则 javac.exe 首先获得我们操作系统默认采用的编码格式,也即在编译 java 程序时,若我们不指定源程序文件的编码格式, JDK 首先获得操作系统的 file.encoding 参数 ( 它保存的就是操作系统默认的编码格式,如 WIN2k ,它的值为 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,这下没警告了,运行也正确了在JCreator 4中设置:菜单:Configure --> Options --> JDK Tools --> Compiler,选中<Default>,然后选EditParameters里面,最前面添加:-encoding UTF-8Parameters原来的默认值为:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]修改后为:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]
 

你可能感兴趣的:(java,jdk,Class,Parameters,compiler,tools)