【问题标题】:How can I display swedish characters in Android app?如何在 Android 应用中显示瑞典语字符?
【发布时间】:2023-03-29 08:41:01
【问题描述】:

我有一个数据库,可以从中提取数据到我的 Android 项目中。那里有一些带有瑞典字母å、ä、ö的文本字符串:√•=å、√§=ä、√δ=ö。在我在应用程序的 textview 上打印这些符号之前,将它们转换为实际字母的最佳方法是什么?替代,比如用å替换√•,是要走的路吗?如何在现在获取数据的查询中输入:

public Cursor getAlternative1(long categoryid, int questionid) {
                final String MY_QUERY = "SELECT question, image, alternative, questionid, correct FROM tbl_question a INNER JOIN tbl_alternative b ON a._id=b.questionid AND b.categoryid=a.categoryid WHERE a.categoryid=? AND a._id=?";

                Cursor cursor = mDb.rawQuery(MY_QUERY, new String[]{String.valueOf(categoryid), String.valueOf(questionid)});
                if (cursor != null) {
                      cursor.moveToFirst();
                 }
                return cursor;
            }

感谢您的帮助!

【问题讨论】:

  • 如何将数据插入数据库?当我将瑞典语字母插入到我的中时,正如预期的那样,它全部出现在我的ListView 中。
  • 它们插入为√•=å、√§=ä、√δ=ö,这些符号代表字母。如果上面的格式是像 utf-8 这样的已知格式,或者我应该为此替换它等等,这就是我所追求的翻译。
  • 好的,所以听起来好像在插入时,您想要å,实际上插入√•=å - 对吗?您是作为字符串文字(例如,String text = "√•=å";)还是让 Android 处理 UTF-16 编码(例如,String text = "å";)?由于Strings 已经采用 UTF-16 编码,您不需要自己处理翻译 - 它已经能够处理重音字符,而无需您做任何额外的工作。
  • 对不起,我不清楚,在我的数据库中(我按原样导入,我自己没有输入任何数据)字母用√•等表示。对于HTML有一种简单的写 å 的方法,例如 &auml,浏览器“理解”它。我错过了类似的转换吗?我该如何处理你所说的重音字符?

标签: android sqlite character mojibake


【解决方案1】:

您的字符串数据似乎最初以UTF-8 编码,但被误解为MacRoman

首先要做的是确保您的数据正确地存储在数据库中。您可以使用SELECT HEX(SomeColumn) 查看为字符串存储的原始字节。 SQLite 中的默认编码是 UTF-8,因此正确编码的字符串将具有C3A5 对应于åC3A4 对应于äC3B6 对应于ö。如果您看到E2889AE280A2E2889AC2A7E2889AE28882,那么在数据进入数据库之前就发生了对字符(å→√•、ä→√§、ö→√δ)的误解。如果您只看到8C8A9A,则说明正在产生相反的误解。

如果您的数据库是正确的,那么它可能是一个 I/O 例程,它认为系统编码是 UTF-8,而实际上它是 MacRoman。试试System.setProperty("file.encoding", "macintosh");

【讨论】:

  • 嗨!我按照你说的做了,在我的数据库中,E2889AE280A2、E2889AC2A7、E2889AE28882 用于 å,ä,ö。因此,如果您所说的误解发生在数据进入数据库之前,我应该尝试从 MacRoman 解释它吗?我无法更改数据库,它是从另一个项目导入并重复使用的。感谢您清除迷雾并向我介绍不同的格式!
  • str = new String(str.getBytes("macintosh"), "UTF-8");
【解决方案2】:

这是一个有点旧的帖子,但如果您使用 windows cmd shell 将数据导入 sqlite,请尝试在 shell 中执行此操作:

c:> chcp 65001

这会将 cmd shell 的代码页更改为 utf 8

c:> sqlite3 数据库.db

inserts.sql 是一个 UTF-8(没有 BOM 字符!!)插入序列。您可以使用 Notepad++ 创建这种文件

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多