String 字符串中的unicode字符导致应用程序崩溃
我正在制作一个应用程序,其中必须将远程数据库中的数据存储到本地sqlite3数据库中 问题是-当任何字符串 插入的字符包含unicode字符 例如:\U00a0或\U2022或\U2019, 它崩溃了 代码崩溃的部分是-String 字符串中的unicode字符导致应用程序崩溃,string,cocoa,unicode,nsstring,utf-16,String,Cocoa,Unicode,Nsstring,Utf 16,我正在制作一个应用程序,其中必须将远程数据库中的数据存储到本地sqlite3数据库中 问题是-当任何字符串 插入的字符包含unicode字符 例如:\U00a0或\U2022或\U2019, 它崩溃了 代码崩溃的部分是- NSString *insertQuery = @"insert into XYZ(field1,field2) values (@"1",[recordDict objectForKey:@"field2"]); // recordDict contains value:
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
cStringUsingEncoding:
当字符串无法无损地转换为指定的编码时,返回NULL
,从而导致崩溃。您可以使用canBeConvertedToEncoding:
来确保转换是可能的
此外,值
1
对应于NSASCIIStringEncoding
,这对于使用Unicode字符的字符串肯定会失败NSUTF8StringEncoding
可能更合适。cStringUsingEncoding:
当字符串无法无损转换为指定编码时,返回NULL
,从而导致崩溃。您可以使用canBeConvertedToEncoding:
来确保转换是可能的
此外,值1
对应于NSASCIIStringEncoding
,这对于使用Unicode字符的字符串肯定会失败NSUTF8StringEncoding
可能更合适