Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
从sqlite读取unicode并创建NSString_Sqlite_Ios_Nsstring_Subscript - Fatal编程技术网

从sqlite读取unicode并创建NSString

从sqlite读取unicode并创建NSString,sqlite,ios,nsstring,subscript,Sqlite,Ios,Nsstring,Subscript,我在一个iOS应用程序上工作,我需要在其中存储和检索SQLite DB,这是一个有下标的NSString的表示。我可以在编译时使用常量创建NSString: @“Br\u2082\u CCl\u2084” \u2082是2下标,\u2084是4下标。im在SQLite数据库中存储的内容是: “Br\u2082\u CCl\u2084” 但是我不知道怎么做,就是把它重新转换成一个NSString。从数据库返回的数据是一个char*“Br\\u2082\u CCl\\u2084”,去掉多余的斜杠对我

我在一个iOS应用程序上工作,我需要在其中存储和检索SQLite DB,这是一个有下标的NSString的表示。我可以在编译时使用常量创建NSString:

@“Br\u2082\u CCl\u2084”

\u2082是2下标,\u2084是4下标。im在SQLite数据库中存储的内容是:

“Br\u2082\u CCl\u2084”


但是我不知道怎么做,就是把它重新转换成一个NSString。从数据库返回的数据是一个char*“Br\\u2082\u CCl\\u2084”,去掉多余的斜杠对我微弱的实验没有任何影响。我需要一种方法把它放回NSString中-谢谢

您需要一个
NSString
stringWithCString
类方法或相应的
initWithCString
实例方法。

我解决了这样的问题-为了清晰起见,删除了错误检查-

unicode字符串进入从db编码的参数stringEncoded,如下所示:

“MgBr\u2082\u CH\u2082Cl\u2082”


谢谢在此之前,我介绍了所有stringWithCString:encoding选项,以及CFStringCreateWithCString中的大多数合理转换。除非我错过了什么,否则他们都不会改变它。我猜编译器知道当它遇到@string常量中的斜杠时该怎么做,但是在运行时没有一个转换似乎会咀嚼/u项。
+(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];
}