从sqlite读取unicode并创build一个NSString
我工作的iOS应用程序,我需要存储和从SQLite数据库中检索,具有下标的NSString的表示。 我可以在编译时用常量创build一个NSString:
@ “BR \ u2082_CCl \ u2084”
是2个下标,是4个下标。 什么即时存储在SQLite数据库是:
“BR \ u2082_CCl \ u2084”
但是我不知道该怎么做,将它重新转换成NSString。 数据从数据库中作为char *“Br \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'''''''删除额外的斜线在我的微弱实验中没有任何区别。 我需要一种方式让它回到NSString中 – 谢谢!
您需要NSString
stringWithCString
类方法或相应的initWithCString
实例方法之一。
我解决了这个问题 – 清除错误检查清除 –
Unicodestring进入参数stringEncoded从数据库中,如:
“MgBr \ u2082_CH \ u2082Cl \ u2082”
+(NSString *)decodeUnicodeBytes:(char *)stringEncoded { unsigned int unicodeValue; char *p, buff[5]; NSMutableString *theString; NSString *hexString; NSScanner *pScanner; theString = [[[NSMutableString alloc] init] autorelease]; p = stringEncoded; buff[4] = 0x00; while (*p != 0x00) { if (*p == '\\') { p++; if (*p == 'u') { memmove(buff, ++p, 4); hexString = [NSString stringWithUTF8String:buff]; pScanner = [NSScanner scannerWithString: hexString]; [pScanner scanHexInt: &unicodeValue]; [theString appendFormat:@"%C", unicodeValue]; p += 4; continue; } } [theString appendFormat:@"%c", *p]; p++; } return [NSString stringWithString:theString]; }