由于字符串中的unicode字符导致应用程序崩溃

Dev*_*shi 1 string unicode cocoa utf-16 nsstring

我正在创建一个应用程序,我必须将数据从远程数据库存储到本地sqlite3数据库.

问题是 - 当要插入的任何字符串包含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));
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我如何解决这个问题?

谢谢,

Miraaj

bos*_*acs 5

cStringUsingEncoding:返回NULL时,字符串不能无损转换为指定编码,因此你的崩溃.您可以使用canBeConvertedToEncoding:以确保转换成为可能.

此外,该值1对应于NSASCIIStringEncoding具有Unicode字符的字符串肯定会失败的值.NSUTF8StringEncoding可能更合适.