我有一个使用构建的ant构建脚本。属性文件。这里是这样的:
release_type=debug
version_code=1
version_name=1.0.0
logo_text=This is German: special chars like ä or ö
我的问题是现在,我使用logo_text
来替换xml文件中的占位符,结果是在3个构建垃圾中的2个,如:
<string name="logo_text">"This is German: special chars like ää or ü."</string>
我有3个构建目标(每个使用自己的属性文件),它总是相同的2弄得一团糟,第三个被正确替换。
文本的来源总是一个构建。属性是UTF-8
编码的,构建文件也使用UTF-8
。我找不出两者有什么不同。
如何用文本替换占位符:
<?xml version="1.0" encoding="UTF-8"?>
<project name="branding-builds">
<!-- code snipped -->
<copy todir="./${short_title}">
<fileset dir="./brandings/${short_title}">
<exclude name="**/*.png"/>
<exclude name="**/*.java"/>
</fileset>
<filterset>
<filter token="LOGO_TEXT" value="${logo_text}" />
</filterset>
</copy>
<!-- code snipped -->
</project>
信息:重写特殊字符以确保copy&paste不会弄乱并不能解决问题。
属性文件不应该是UTF-8编码。引用自http://download.oracle.com/javase/6/docs/api/java/util/Properties.html:
输入/输出流采用ISO 8859-1字符编码进行编码。不能直接用这种编码表示的字符可以使用使用Unicode转义书写;只允许一个'u'字符在转义序列中。可以使用native2ascii工具进行转换属性文件与其他字符编码之间的转换