【问题标题】:encoding issue with special chars in properties file属性文件中特殊字符的编码问题
【发布时间】:2011-08-11 19:39:13
【问题描述】:

我有一个使用 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 个搞砸了,第三个被正确替换了。

文本的来源始终是 UTF-8 编码的 build.properties,并且构建文件也使用 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>

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

【问题讨论】:

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


    【解决方案1】:

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

    输入/输出流采用 ISO 8859-1 字符编码进行编码。 在这种编码中不能直接表示的字符可以是 使用 Unicode 转义符编写;只允许使用单个 'u' 字符 在转义序列中。 native2ascii 工具可以用来转换 属性文件往返于其他字符编码。

    【讨论】:

    • 谢谢,使用 ISO 8859-1 编码保存属性解决了这个问题。我只是不明白为什么他们不支持 UTF-8。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2017-06-03
    • 2018-07-28
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多