【问题标题】:displaying accented letters in TextView and Spinner controls在 TextView 和 Spinner 控件中显示重音字母
【发布时间】:2017-04-05 01:40:10
【问题描述】:

我有一个最初来自 Windows 系统数据库的人员姓名列表。它以通过网络发送的 XML 文件的形式传输到我的 Android 应用程序。

我的问题是某些名称包含重音字符。例如,一个名字包含一个带重音符号的 o。

我需要能够在 textView 和 Spinner 控件中显示这些名称及其重音。在我的第一个版本中,我什么也没做,重音字符显示为包含问号的黑色菱形。然后我尝试将所有重音字母转换为它们的 HTML 转义版本,例如用 ó 替换 o 锐音。我曾希望这会在 Android 端被翻译回正确的重音字符,但事实并非如此。字符串 ó出现在我的 Android 应用控件中。

有没有什么简单的方法可以在我的 Android 应用程序中显示一个可能包含重音符号的字符串,并正确显示这些重音符号?请注意,我可以控制 Windows 端和 Android 端,因此我可以在必要时修改从 Windows 发送到 Android 的 XML 文件的格式。如果可以避免的话,我宁愿不必修补字体。

【问题讨论】:

    标签: android textview android-spinner diacritics


    【解决方案1】:

    我刚试了textView.setText("ó"),没有发现任何问题。

    你可以试试这样的测试:

    try {
        byte[] strByte = "ó".getBytes("UTF-8");
        String myStr = new String(strByte, "UTF-8");
        textView.setText(myStr);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    

    这也对我有用。

    【讨论】:

    • 对不起,我才看到这个。我认为这个网站会提醒我答案。我设法让它使用 ó如果我这样设置 textView: target.setText(Html.fromHtml(newText), TextView.BufferType.SPANNABLE);
    【解决方案2】:

    抱歉,我才看到回复。我以为 StackOverflow 会在收到回复时通过电子邮件提醒我。 我设法使用 ó并像这样设置 textView:

        target.setText(Html.fromHtml(newText), TextView.BufferType.SPANNABLE);
    

    我认为,设置文字是否有效取决于所使用的字体。原始字符串来自 Windows PC,所以我想知道它是否使用了不同的编码。无论如何,ó如上所述工作,所以我现在很高兴。 再次感谢您的关注。

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      相关资源
      最近更新 更多