【问题标题】:Accented characters in Android XMLAndroid XML 中的重音字符
【发布时间】:2015-02-26 21:36:58
【问题描述】:

我正在开发一个多语言 Android 应用程序,但我无法显示特殊字符(例如:é 或 è)。我试图用它们的引用 (&eacute) 替换字符,但它显示“实体 &eacute 已被引用,但未声明”。

带有特殊字符的 XML:

<string name="welcomeMsg1">Cette application a été conçu à fin de vous guider.</string>

当我使用上述 xml 文件时,不显示特殊字符。所以我将特殊字符替换为相应的引用。

带有引用的 XML:

<string name="welcomeMsg1">Cette application a &eacute;t&eacute; con&ccedil;u &aacute; fin de vous guider.</string>

上面的代码会产生错误。

我找不到解决方案,所以如果有人可以提供帮助,我将非常感激。谢谢

【问题讨论】:

  • 请发布错误。谢谢。
  • 实体“eacute”被引用,但未声明
  • 这听起来像是一个编码问题,你是在你的 xml 文件中声明你的编码吗?
  • 是的,我使用以下代码启动 xml 文件:
  • XML 文件本身是否编码为 UTF-8?

标签: android xml string


【解决方案1】:

您需要将 strings.xml 中的重音字符替换为其 unicode 值。

例如,不要写ó,而是写\u00f3

【讨论】:

    【解决方案2】:

    两种解决方案。第一个要求您为 xml 文档创建一个 DTD,并在 DTD 中声明 &lt;!ENTITY&gt; 类型。你可以谷歌一下。

    第二个解决方案非常漂亮,但我不知道它是否有效。 HTML 规范有一个足够的实体类型声明。我在以下位置找到了这个:

    &eacute;=é: need to show as it is

    String modString = Html.fromHtml(Html.fromHtml((String) yourstring).toString()); 
    

    根据帖子,上面的代码应该给你一个样式字符串,并添加了你的字符。

    HTML 实体列表 http://help.dottoro.com/lausooxp.php

    【讨论】:

    • 非常感谢您的回答。但问题不在于编码或实体声明。我使用自定义字体来显示文本,它不支持特殊字符。感谢您花时间回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多