【问题标题】:How to convert a property value from UTF8 to ascii in Ant如何在 Ant 中将属性值从 UTF8 转换为 ascii
【发布时间】:2011-10-11 22:01:51
【问题描述】:

假设我有一个财产

${test}=íñü

在Ant中,有没有把这个属性值转换为\uxxxx的方法?

我知道 Ant 可以使用 native2ascii 转换文件。

属性值怎么样?

更新:我问这个问题的原因是因为我想在ant中运行一个bat文件,bat文件的路径包含一些非Ascii char:

${test}=íñü
<target name="help">
    <exec executable="cmd">
        <arg value="/c"/>
        <arg value="${test}.bat"/>
        <arg value="-p"/>
    </exec>
</target>

错误是系统找不到路径。我认为这与路径的编码方式有关。但是从 UTF8 到 ASCII 的路径转义无助于解决问题

【问题讨论】:

    标签: encoding ant


    【解决方案1】:

    使用loadresource taskencoding filter

    此示例将属性test2 设置为test

    <property name="test" value="íñü" />
    <loadresource property="test2">
      <string value="${test}" />
      <filterchain>
        <escapeunicode/>
      </filterchain>
    </loadresource>
    <echo encoding="utf8" message="'${test}' maps to '${test2}'" />
    

    结果:

    [echo] 'íñü' maps to '\u00ed\u00f1\u00fc'
    

    loadresource 任务需要 Ant 1.7 或更高版本。

    【讨论】:

    • 太棒了。非常感谢。有用。我问它的原因是因为我有另一个问题。但似乎这最终并不能帮助我解决另一个问题。请看我更新的帖子
    • 我现在手边没有 Windows 机器来进行实验。你能从一个简单的 .bat 文件中获得同样的效果吗?可能是 Java file.encoding 与操作系统不匹配 - 也许 windows 期待 CP-1252?
    • 您的意思是从 cmd 运行 .bat 吗?它可以工作,但是 cmd 无法显示文件名
    • 我的意思是从另一个批处理文件运行 íñü.bat,一个使用 utf-8 编码的批处理文件。但听起来它可能很好用......就像我说的,我没有操作系统来调查这个。
    猜你喜欢
    • 2011-05-20
    • 2018-05-01
    • 2023-04-05
    • 2023-03-31
    • 1970-01-01
    • 2015-06-04
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多