-1

我在 android 应用程序中使用 SQL 数据库并且遇到了撇号问题。

我的数据库是我在 MS Excel 2007 中的报价数据库,然后以 .csv 格式保存。然后我将它导入到我为应用程序拥有的 sql 表中。但是,带有撇号的引号在数据库(以及应用程序)中未正确显示。每个撇号都替换为一个不可见的字符。我知道它的存在是因为字符数以及例如在看起来像“arent”的单词“不是”中,它需要点击 3 次右箭头才能从 n 的左侧到右侧t 的一侧。如果我手动将撇号添加到 sql 表中,它会在保存数据库时转换回这个不可见字符。在 android 应用程序中,这个不可见的字符显示为一个空心矩形。

我确信问题不在于我的应用程序显示报价,因为我已将字符串传递给相同的代码,并且它显示撇号非常好。

有没有办法解决这个问题,可能通过更改字符集或类似的东西?还是 SQL 不支持撇号?

4

2 回答 2

0

由于单引号和撇号是同一个字符,因此您必须在 sql 中做一些事情来告诉数据库何时将其视为字符串的一部分或何时使用它来包围字符串。在我知道的每个 RDBMS 中,如果您希望字符成为字符串的一部分,则“引用引号”,即在与数据库交谈时将 ' 更改为 ''。

这似乎只是你问题的一部分。另一部分是您的 android 应用程序将此字符显示为矩形或撇号。这与sql无关。那是android应用程序的功能。

于 2013-04-04T16:18:16.860 回答
0

我找到了该问题的替代解决方案。

在应用程序运行时,我用撇号替换不可见字符,最后的字符串就是引号的外观。

String quote = (get the quote from the SQL table)
char[] tempQuoteCharArr = new char[quote.length()];
tempQuoteCharArr = quote.toCharArray();
    for(int i = 0; i < quote.length(); i++){
        if(tempQuoteCharArr[i] == ''){
            tempQuoteCharArr[i] = '\'';
        }
    }
    quote = String.valueOf(tempQuoteCharArr);

不可见字符位于 if 语句中的单引号之间。

于 2013-04-05T15:31:21.813 回答