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

标签 string cocoa unicode nsstring utf-16

我正在制作一个应用程序,其中必须将远程数据库中的数据存储到本地 sqlite3 数据库中。

Problem is - when any string to be inserted contains unicode character such as: \U00a0 or \U2022 or \U2019, it crashes.

崩溃的代码部分是这样的-

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));
}

谁能建议我如何解决这个问题?

谢谢

米拉杰

最佳答案

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

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

关于string - 由于字符串中的 unicode 字符导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325311/

相关文章:

c - Malloc 和 free 错误

ios - 自动布局如何从 View 中获取计算值

macos - 如何将符合 NSCoding 的对象克隆到其子类中?

python - 当我编辑详细信息时,Django 表单正在添加字符

google-chrome - 什么是 ROUNDED-UNICODE 字符的正确显示?

复制双指针字符串

javascript - 如何检测 JavaScript 中的字母字符?

objective-c - 如何判断 NSPanel 是否不再在 View 中?

java - 如何将数字的 Unicode 转换为 Java 中的数字本身?

python - 将二维 numpy 数组转换为字符串