在这篇文章中,我们将带领您了解Java,Ant错误:编码Cp1252的不可映射字符的全貌,包括java错误编码gbk的不可映射字符的相关情况。同时,我们还将为您介绍有关ant编译报错“错误:编码UTF
在这篇文章中,我们将带领您了解Java,Ant错误:编码Cp1252的不可映射字符的全貌,包括java错误编码gbk的不可映射字符的相关情况。同时,我们还将为您介绍有关ant编译报错“错误: 编码UTF-8的不可映射字符”、CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法、CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法?、CXF JaxWsDynamicClientFactory 错误:编码GBK的不可映射字符的知识,以帮助您更好地理解这个主题。
本文目录一览:- Java,Ant错误:编码Cp1252的不可映射字符(java错误编码gbk的不可映射字符)
- ant编译报错“错误: 编码UTF-8的不可映射字符”
- CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法
- CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法?
- CXF JaxWsDynamicClientFactory 错误:编码GBK的不可映射字符
Java,Ant错误:编码Cp1252的不可映射字符(java错误编码gbk的不可映射字符)
我在项目中使用Java,Eclipse和Ant。我有一些Java代码需要编辑,并在其中添加一些UTF-8字符。以前,我的build.xml具有:并且运行良好。现在,当我尝试运行这些UTF-8字符时,它会引发“错误:编码Cp1252的不可映射字符”
谁能告诉我解决的办法吗?我尝试将xml中的编码更改为UTF-8和Cp1252,但是没有运气。
我正在使用JRE7,Eclipse Kepler和Ant 4.11。
答案1
小编典典简单地更改“广告”编码并不能弥补文件中存在无法使用UTF-8解释理解的字节这一事实,这可能会很棘手。在Ant中,您需要更新javac
任务以添加类似的编码,<javac... encoding="utf-8">
确保Eclipse中的文件编码也是UTF-8,因为某些cp1252字符也不会直接映射到UTF-8。您可能需要使用单一编码来维护整个项目。否则,编译器只需要一个编码器时就会看到不同的编码。
ant编译报错“错误: 编码UTF-8的不可映射字符”
根据报错 的提示是编码的问题,build.xml文件使用的是ANSI,文件中首行使用<?xml version="1.0" encoding="UTF-8"?>,网上查资料都是将encoding设置为GBK,设置之后是之前报错的文件“AdvertiserAction.java”正常了,但是又会产生新的文件“PageUtil.java”报错“错误: 编码GBK的不可映射字符”,这个错误,导致无法修改为GBK格式进行编译,后来将字符串设置为“iso-8859-1”之后,才可以正常编译,build.xml文件的内容为:
<target name="compile">
<javac debug="on" srcdir="${src.dir}"
destdir="${build.dir}/${classes.dir}" includeAntRuntime="false" encoding="iso-8859-1"
classpathref="classpath" />
查找过的资料链接 https://stackoverflow.com/questions/4995057/unmappable-character-for-encoding-utf-8-error
CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法
-
出现这样的错误,一般是因为代码中含有中文字符,注释中的中文字符也算。由于使用 CMD 运行 java 程序的时候,系统默认的编码格式是 gbk。而包含中文字符的代码一般是 UNICODE 格式,所以直接运行含有中文字符的代码就很容易出现编码错误。
-
2
知道了问题来源,就很容易解决问题了。对于使用 notpad++ 的朋友来说,可以直接使用编辑器自带的转码功能。
编码转换的位置在 编码 栏,将编码转换为 “使用 ANSN 格式编码” 即可。
-
3
但是如果我们直接点击 “使用 ANSN 格式编码”,会发现原来的中文都编程了乱码,这显然不是我们想要的效果。
-
4
正确的做法是先将源文件全部复制一遍,然后删除掉所有的代码,接着讲编码格式设置为 “使用 ANSN 格式编码”,设置好之后再将源文件粘贴出来,保存即可。这个时候就会发现编码编程了 ANSN 格式。
-
5
修改好了之后,我们再运行一下,完美运行。
END
方法二:使用 - encoding 指令指定运行编码为 UTF-8
-
如果没有使用集成编辑器,而是使用的记事本这样的工具来编写代码。那么可以直接使用 - encoding 指令来为文件指定编码格式。
例如 javac -encoding UTF-8 XXX.java
其中 XXX 替换为你的 java 文件名。
-
例如本示例中,输入 javac -encoding UTF-8 Puppy.java, 编译成功,完美运行。
CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法?
方法一: (将 notepad 编辑器的编码方式改为 ANSI 后再进行程序代码的编译,将之前乱码的汉字删除重新输入正常的汉字)
1.notepad 编辑器默认编码方式为 UTF-8 时,CMD 里面执行 javac Teacher.java,代码里中文打印会出现乱码
2. 此时调整 notepad 的编码方式为 ANSI,看到原来写的汉字代码出现乱码
3. 在 notepad 编码方式为 ANSI 时将乱码删除,修改为正常的中文汉字
4. 再次在 CMD 里执行 javac Teacher.java 时发现将不再报错
分析:
1. 出现这样的错误,一般是因为代码中含有中文字符,注释中的中文字符也算。由于使用 CMD 运行 java 程序的时候,系统默认的编码格式是 gbk。而包含中文字符的代码一般是 UNICODE 格式,所以直接运行含有中文字符的代码就很容易出现编码错误。
2. 知道了问题来源,就很容易解决问题了。对于使用 notpad++ 的朋友来说,可以直接使用编辑器自带的转码功能。编码转换的位置在 编码栏,将编码转换为 “使用 ANSN 格式编码” 即可。
3. 但是如果我们直接点击 “使用 ANSN 格式编码”,会发现原来的中文都编程了乱码,这显然不是我们想要的效果。
4. 正确的做法是先将源文件全部复制一遍,然后删除掉所有的代码,接着讲编码格式设置为 “使用 ANSN 格式编码 ",设置好之后再将源文件粘贴出来,保存即可。这个时候就会发现编码编程了 ANSN 格式。
5. 修改好了之后,我们再运行一下,完美运行。
方法二:(notepad 编码方式默认选择 UTF-8,CMD 里执行的时候指明用 UTF-8 编码方式编译)
应该使用 - encoding 参数指明编码方式:javac -encoding UTF-8 *.java (指明用 UTF-8 的编码方式编译)
注意: * 代指 java 文件名
CXF JaxWsDynamicClientFactory 错误:编码GBK的不可映射字符
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); String wsUrl = "http://www.xxx.com/order.service?wsdl"; Client client = dcf.createClient(wsUrl);
在 Windows 系统的使用 CXF 动态客户端时可能会遇到 tomcat 启动后调用 wsdl 遇到 很多 错误GBK编码,这个错误的原因是 由于项目 maven 配置使用 UTF-8 的,CXF 生成java 文件是使用的UTF-8 的编码,而使用javac 编译的时候 取的是系统默认的编码 由于中文 window 系统采用GBK 编码,所有就相当于使用 javac -encoding gbk *.java,所有就出 出现 如上错误,正确的 方法是 javac -encoding UTF-8 *.java就可以解决。
查询 org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory,有误编码相关设置,可选没提供,继续寻找它的父类 org.apache.cxf.endpoint.dynamic.DynamicClientFactory,很可惜也没有。继续研读源码看他们的编译过程,在 DynamicClientFactory 的 发现 compileJavaSrc 方法 如下:
protected boolean compileJavaSrc(String classPath, List<File> srcList, String dest) { org.apache.cxf.common.util.Compiler javaCompiler = new org.apache.cxf.common.util.Compiler(); javaCompiler.setClassPath(classPath); javaCompiler.setOutputDir(dest); javaCompiler.setTarget("1.6"); return javaCompiler.compileFiles(srcList); }
继续 org.apache.cxf.common.util.Comilper :
重要找到解决办法了重新实现类 DynamicClientFactory 的 compileJavaSrc 方法
protected boolean compileJavaSrc(String classPath, List<File> srcList, String dest) {
org.apache.cxf.common.util.Compiler javaCompiler
= new org.apache.cxf.common.util.Compiler();
javaCompiler.setEncoding("UTF-8");
javaCompiler.setClassPath(classPath);
javaCompiler.setOutputDir(dest);
javaCompiler.setTarget("1.6");
return javaCompiler.compileFiles(srcList);
}
这样就大功告成。
当然还有一种解决思路,既然是 file.encoding 的 问题,我们可以在tomcat 中设置
-Dfile.encoding=UTF-8,这样编译器的控制台同样需要设置为 -Dfile.encoding=UTF-8,也可以解决。
详情见: IntelliJ IDEA 控制台中文乱码解决方案
关于Java,Ant错误:编码Cp1252的不可映射字符和java错误编码gbk的不可映射字符的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ant编译报错“错误: 编码UTF-8的不可映射字符”、CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法、CMD 运行 JAVA 出现编码 GBK 的不可映射字符处理方法?、CXF JaxWsDynamicClientFactory 错误:编码GBK的不可映射字符等相关知识的信息别忘了在本站进行查找喔。
本文标签: