dav*_*ino 26 java ant character-encoding
不知怎的,我无法让我的UTF-8资源与Ant玩得很好.
我得到了很多"警告:编码ascii的不可映射的字符".我真的很疯狂.小时,小时和小时.顺便说一句,我注意到有5个人已经疯狂地使用了标签.:-)
是的,我已经读过这个,这个和其他人.Google也是(至少3个或4个不同搜索的前5页结果).有javac选项.我试过了.还有一些预设或东西(对不起,凌晨3点).也没用.
我正在使用Ant生成Android apk文件.我不能使用Eclipse,所以没有.顺便说一句,ant文档对我来说是胡言乱语.这些例子完全没用.我已经不记得我尝试了多少.
我尝试使用Dfile.encoding选项,尝试将其与CHCP 65001 Windows命令混合使用.做了所有的组合,它甚至让Ant(Javac我猜)停止吐痰错误,但它仍然没关系.我的代码仍然以垃圾carachters(一堆??而不是á,í等)结束.
Jes*_*erE 31
您是否正确地为编译器指定了文件编码?否则,java编译器默认使用平台的默认编码,在Windows上(例如)不是UTF-8.通过对javac使用-encoding标志来指定编码.
javac -encoding utf8 ...
Run Code Online (Sandbox Code Playgroud)
在ant build.xml中:
<javac ... encoding="UTF-8" ... />
Run Code Online (Sandbox Code Playgroud)
Ale*_*kov 18
只需在build.xml脚本中指定编码:
<javac encoding="UTF-8" ... />
Run Code Online (Sandbox Code Playgroud)
但是对于代码重用,最好将值提取到项目特定的配置文件中:
<property file="build.properties" />
<property name="java.encoding" value="ascii" />
<javac encoding="${java.encoding}"
source="${java.source}" ....>
<src path="${source.dir}" />
<classpath>
<fileset ... />
</classpath>
</javac>
Run Code Online (Sandbox Code Playgroud)
然后只需添加java.encoding=UTF-8到build.properties以基于每个项目覆盖编码.
对于在Windows上使用UTF-8源文件的所有人,并尝试使用Dan Galpin/Tim Bray着名的博客文章使用Proguard构建Android软件包.
这种编码问题发生在javac上(感谢提示,JesperE).但是,我无法在项目的文件上创建新的javac规则,因为我不知道任何需要的参数.所以这是简单的答案(可能不是唯一的答案):
请注意,在开始时,有一个输出正在讨论一些导入的ANT规则.一开始你会看到一些[设置]规则.寻找这个:
[setup]导入规则文件:tools\ant\ant_rules_r3.xml
找到该文件并将其打开.搜索"javac编码".您将看到设置为"ascii".更改为"UTF-8".
这就是我在这里做的.我确信有一种方法可以在每个项目的基础上覆盖它.但正如我所说,它一直给我强制参数的错误.所以对我来说至少这样做更容易.此外,我还是只使用UTF-8.
您应该在许多地方设置相同的页面:
javac encoding="UTF-8" ... /-Dfile.encoding=UTF-8 在 Ant 调用的参数中在文件属性资源编码中 - 再次选择相同的页面。您还可以通过 IDE(Eclipse 的首选项)为容器中的所有文件更改它。然后使所有文件从容器继承它。
如果某些文件是以错误的编码创建的,请通过 PsPad 或另一个文本编辑器(复制粘贴、更改文件编码、返回复制粘贴)重新编辑它们的内容。这些文件将在unmappable character错误中提及。
设置所有这四个问题后,您将没有unmappable character线路。