我正在创建一个应用程序,我必须将远程数据库中的数据存储到本地sqlite3 db中。
问题是 - 什么字符串 inserted包含unicode字符 例如:\ U00a0或\ U2022或\ U2019, 它崩溃了。
崩溃的代码部分是这个 -
NSString *insertQuery = @"insert into XYZ(field1,field2) values (@"1",[recordDict objectForKey:@"field2"]);
// recordDict contains value: @"\U00a0 \U00a0 \U00a0 \U00a0The Cadfsdfsdfptain\U2019s" for key: @"field2"
sqlite3_stmt *insertStmnt;
const char *sql = [insertQuery cStringUsingEncoding:1];
printf("insertQuery - %s",sql); // it is showing insertQuery - (null) and crashing at next line
if(sqlite3_prepare_v2(database, sql, -1, &insertStmnt, NULL) != SQLITE_OK){
NSLog(@"Error while creating insert statement. '%s'",sqlite3_errmsg(database));
}
有人可以建议我如何解决这个问题吗?
谢谢,
Miraaj
答案 0 :(得分:5)
cStringUsingEncoding:
返回NULL
,因此崩溃。您可以使用canBeConvertedToEncoding:
确保转换成为可能。
此外,值1
对应于NSASCIIStringEncoding
,对于具有Unicode字符的字符串,它肯定会失败。 NSUTF8StringEncoding
可能更合适。