Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串中的unicode字符导致应用程序崩溃_String_Cocoa_Unicode_Nsstring_Utf 16 - Fatal编程技术网

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

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:

我正在制作一个应用程序,其中必须将远程数据库中的数据存储到本地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));
}
有人能给我建议如何解决这个问题吗

谢谢


Miraaj

cStringUsingEncoding:
当字符串无法无损地转换为指定的编码时,返回
NULL
,从而导致崩溃。您可以使用
canBeConvertedToEncoding:
来确保转换是可能的


此外,值
1
对应于
NSASCIIStringEncoding
,这对于使用Unicode字符的字符串肯定会失败
NSUTF8StringEncoding
可能更合适。

cStringUsingEncoding:
当字符串无法无损转换为指定编码时,返回
NULL
,从而导致崩溃。您可以使用
canBeConvertedToEncoding:
来确保转换是可能的

此外,值
1
对应于
NSASCIIStringEncoding
,这对于使用Unicode字符的字符串肯定会失败
NSUTF8StringEncoding
可能更合适