编码问题与属性文件中的特殊字符

时间:2011-08-11 11:34:41

标签: android ant character-encoding build-process build-script

我有一个使用build.properties文件的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得到了混乱,第三个被正确替换。

文本的来源始终是build.properties,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>

信息:重写特殊字符以确保复制和粘贴没有搞砸没有解决问题。

1 个答案:

答案 0 :(得分:4)

属性文件不应该是UTF-8编码的。引自http://download.oracle.com/javase/6/docs/api/java/util/Properties.html

  

输入/输出流以ISO 8859-1字符编码进行编码。   无法在此编码中直接表示的字符可以是   使用Unicode转义编写;只允许一个'u'字符   在逃脱序列中。 native2ascii工具可用于转换   与其他字符编码有关的属性文件。