【问题标题】:How do I keep the apostrophes when importing csv to sqlite将csv导入sqlite时如何保留撇号
【发布时间】:2013-04-04 15:49:09
【问题描述】:

我在 Android 应用程序中使用 SQL 数据库,但遇到了撇号问题。

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

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

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

【问题讨论】:

    标签: sql csv import


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我认为这应该可行。为了完整起见,我只是包含了有关该应用程序的其他信息 - 因此我没有用“android”标记问题。不过有一个问题 - 我是否将 .csv 文件中的“更改为”?我刚做了这个,遇到了一个非常相似的问题,但现在有 2 个不可见字符而不是 1 个。
    • 很遗憾,这并没有解决问题 - 还有其他建议吗?
    【解决方案2】:

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

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

    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 语句中的单引号之间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2020-06-29
      • 1970-01-01
      • 2016-09-27
      相关资源
      最近更新 更多