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

不知何故,我无法让我的UTF-8资源与Ant合作。

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

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

我正在使用Ant生成Android apk文件。 我不能使用Eclipse,所以没有。 顺便说一句,ant文档对我来说是胡言乱语。 这些例子完全没用。 我已经不记得我尝试了多少。

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

您是否正确地为编译器指定了文件编码? 否则,java编译器默认使用平台的默认编码,在Windows上(例如)不是UTF-8。 通过对javac使用-encoding标志来指定编码。

javac -encoding utf8 ... 

在ant build.xml中:

  

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

  

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

         

然后只需将java.encoding=UTF-8添加到build.properties以基于每个项目覆盖编码。

对于在Windows上使用UTF-8源文件并尝试使用由Dan Galpin / Tim Bray着名的博客文章构建Proguard的Android软件包的所有人。

这种编码问题发生在javac上( 感谢提示,JesperE )。 但是,我无法在项目的文件上创建新的javac规则,因为我不知道任何需要的参数。 所以这是简单的答案(可能不是唯一的答案):

  1. 尝试通常的“ant release”命令。
  2. 请注意,在开始时,有一个输出正在讨论一些导入的ANT规则。 一开始你会看到一些[设置]规则。 寻找这个:

    [setup]导入规则文件:tools \ ant \ ant_rules_r3.xml

  3. 找到该文件并将其打开。 搜索“javac编码”。 您将看到设置为“ascii”。 更改为“UTF-8”。

  4. 再次“释放”,它会没事的。

这就是我在这里做的。 我确信有一种方法可以在每个项目的基础上覆盖它。 但正如我所说,它一直给我强制参数的错误。 所以对我来说至少这样做更容易 。 此外,我还是只使用UTF-8。

您应该在很多地方设置相同的页面:

  1. 在Ant Script javac encoding="UTF-8" ... /
  2. -Dfile.encoding=UTF-8 Ant调用参数中的-Dfile.encoding=UTF-8
  3. 在file-properties-resource-encoding中 – 再次选择相同的页面。 您还可以通过IDE(Eclipse的首选项)为容器中的所有文件更改它。 然后使所有文件从容器inheritance。

  4. 如果某些文件是以错误的编码创建的,请通过PsPad或其他文本编辑器(复制粘贴,更改文件编码,返回复制粘贴)重新编写内容。 这些文件将在unmappable character错误中提及。

设置所有这四个问题后,您将没有unmappable character行。

下面是ant build.xml文件中-Dfile.encoding = UTF-8的用法:

   

这将解决问题。 适用于所有UTF 8字符。