Windows上的Ant编码问题 - UTF-8文件,但在音调符号上吐出垃圾

2022-09-01 15:10:48

不知何故,我无法让我的UTF-8源代码与Ant一起玩得很好。

我收到很多“警告:用于编码ascii的不可映射字符”。我快疯了,真的。小时,小时,小时。顺便说一句,我注意到5个人已经疯狂地使用了这个标签。:-)

是的,我读过这个这个和其他的。谷歌也(至少3或4个不同搜索的前5个页面结果)。有javac选项。我试过了。还有一些预设或其他东西(对不起,凌晨3点)。也不起作用。

我正在用蚂蚁生成安卓apk文件。我不能使用Eclipse,所以没有。顺便说一句,蚂蚁文档对我来说是胡言乱语。这些例子根本没有用处。我已经不指望我尝试了多少。

我尝试过使用Dfile.encoding选项,尝试将其与CHCP 65001 Windows命令混合使用。做了所有的组合,它甚至使Ant(我猜是Javac)停止吐痰错误,但它仍然无关紧要。我的代码仍然以垃圾卡拉切特(一堆??而不是á,í等)结束。


答案 1

是否正确向编译器指定了文件编码?否则,Java编译器将默认使用平台的默认编码,例如,在Windows上不是UTF-8。编码是通过使用 javac 的 -编码标志来指定的。

javac -encoding utf8 ...

在蚂蚁建造中.xml:

<javac ... encoding="UTF-8" ... />

答案 2

只需在脚本中指定编码:build.xml

<javac encoding="UTF-8" ... />

但是对于代码重用,最好将价值提取到特定于项目的配置文件中:

<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>

然后只需添加到build.properties即可覆盖每个项目的编码。java.encoding=UTF-8


推荐