0

データベースから抽出した中国語の文字列を入れなければならないというラベルがありますが、何も出てきません。他のすべてが正しく機能しているのに、文字列がデータベースからプルされていないことに気づきました。私に何ができる?

  char *subTitle= (char*)sqlite3_column_text(statement,13);
  NSLog(@" The sutitle is %s", subTitle);
      //The sutitle is
  rowTable.sottotitolo = [[NSString alloc]initWithUTF8String: subTitle];
  NSLog(@"The subtitle is %@", rowTable.sottotitolo);
      //The subtitle is

西洋アルファベット以外の方法を使用していますか?

   NSLog(@"The string in chinese is %@", self.chinaTable.subtitle);
         //The string in chinese is 
         //is not printed to the screen,but the database is written correctly

   self.labelTitle.text = self.chinaTable.subtitle;
        //empty out

前もって感謝します

4

2 に答える 2

1

sqliteからデータを取得するときは、エンコーディングスキーマを指定する代わりに、次を使用します。

NSString *myChineseText = [NSString stringWithFormat:@"%s",(const char*)sqlite3_column_text(statement, index)];

NSLog(@"%@",myChineseText);

うまくいけば、それはあなたの問題を解決するでしょう。:)

于 2012-12-05T12:40:16.163 に答える
1

試してみてCFStringConvertEncodingToNSStringEncodingくださいkCFStringEncodingBig5_E

また、アップルのドキュメントを参照してください。国際版 または独自のエンコーディングの作成については 、こちらをご覧ください。

unichar ellipsis = 0x2026;
NSString *theString = [NSString stringWithFormat:@"To be continued%C", ellipsis];

// custom encoding

NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseTrad);

NSData *asciiData = [theString dataUsingEncoding:encoding 
                            allowLossyConversion:YES];

NSString *asciiString = [[NSString alloc] initWithData:asciiData 
                                              encoding:encoding];
于 2012-12-05T11:57:34.760 に答える