【问题标题】:Unable to escape special characters in strings.xml无法转义 strings.xml 中的特殊字符
【发布时间】:2013-07-24 23:52:20
【问题描述】:

我正在尝试将字符 '' 放入字符串资源中。

如果我在字符串中使用 HTML 编码:

<> 

它在第一个版本中工作。 但是,在项目的另一个构建之后,某些东西会自动将其转换为:

<>

所以我不能使用以前的编码...

尝试在字符串中加入“

尝试使用 CDATA 将具有与上述相同的行为。

如何在这个废话中加上“”字符?

更新

我已经添加了“eclipse”标签,因为经过一些讨论,这似乎是一个 eclipse 问题——某些东西会自动编辑我的 XML 文件。 更新后的问题是 - 为什么 eclipse 有时会弄乱我的 strings.xml 文件并尝试自行编码特殊字符?

【问题讨论】:

  • @vikram 我不需要和号。我需要尖括号。
  • @CommonsWare CDATA 不适合我,SDK 会自动更改它,如 OP 中所述...
  • CDATA 适用于投票赞成该答案的人,现在包括我,因为我刚刚尝试过并且没有遇到任何问题。我从该答案 (<string name="stringName1"><![CDATA[<html>bla</html>]]></string>) 中粘贴了精确的字符串资源,在TextView 中使用它,尖括号按预期显示。多次构建,没有问题。甚至 Eclipse 也没有抱怨。
  • @CommonsWare 这正是我所经历的。认为它有效。然后突然间,我的 QA 人员说它显示不正确,我检查了我的项目,然后...... Eclipse 将 CDATA 变成了其他东西。已经发生了 2 次......我不知道在哪里看,我的 strings.xml 没有经过任何可能搞砸的地方(没有文件传输或类似的东西)。

标签: android eclipse eclipse-plugin android-xml android-resources


【解决方案1】:

这应该可以工作
<string name="angle_bracket">
<![CDATA[
<
]]>
</string>

如果不是,则问题出在您项目中的其他地方。 (你可以通过在一个新的 android 项目中尝试来确定)

【讨论】:

    【解决方案2】:

    我当前的解决方法是在我的 Java 类中使用硬编码字符串。

    String s = "<M>";
    mTextView.setText(s);
    

    另一个明显的给定答案(使用 CDATA)在理论上是正确的,所以我会 +1 它,但在几个构建周期后它无法在我的 Eclipse 环境中工作,因为 Eclipse 将 CDATA 部分转换为编码字符串(并且然后我的字符串在我的应用程序中显示“CDATA...”)。

    由于我还没有找到更清洁的解决方案,这就是答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多