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
cStringUsingEncoding:返回NULL时,字符串不能无损转换为指定编码,因此你的崩溃.您可以使用canBeConvertedToEncoding:以确保转换成为可能.
此外,该值1对应于NSASCIIStringEncoding具有Unicode字符的字符串肯定会失败的值.NSUTF8StringEncoding可能更合适.
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |