我在Android应用程序中使用SQL数据库并遇到了撇号问题。
我的数据库是我在MS Excel 2007中的报价数据库,然后以.csv格式保存。然后我将其导入到我为应用程序提供的sql表中。但是,带有撇号的引号在数据库中没有正确显示(因此也就是应用程序)。每个撇号都被一个不可见的字符替换。我知道它是存在的,因为字符数和事实,在“不是”这个词看起来像“不”,它需要点击3次右箭头从n的左边到右边t的一面。如果我手动将撇号添加到sql表,它会在保存数据库时将其转换回此不可见字符。在Android应用程序中,这个不可见的字符显示为一个空心矩形。
我确定问题不在于我的应用程序显示引号,因为我已经将String传递给相同的代码并且它显示撇号非常好。
有没有办法解决这个问题,可能是通过更改字符集或类似的东西?或SQL不支持撇号?
答案 0 :(得分:0)
由于单引号和撇号是相同的字符,因此您必须在sql中执行某些操作,以告知数据库何时将其视为字符串的一部分或何时使用它来包围字符串。在我所知道的每个RDBMS中,如果你想让字符成为字符串的一部分,你可以“引用引号”,即在与数据库交谈时将'更改为'。
这似乎只是你问题的一部分。另一部分是你的Android应用程序将此字符显示为矩形而不是撇号。那与sql无关。这是android应用程序的一个功能。
答案 1 :(得分: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语句中的单引号之间。