4

ここで奇妙な問題が発生しました。コードは以下の通りです

NSMutableString *unicodeString = [NSMutableString string];
for (NSUInteger i = 0; i < [data length]; i++) {
    unsigned char byte;
    [data getBytes:&byte range:NSMakeRange(i, 1)];
    unichar unicodeChar = byte;
    NSString *appendString = [NSString stringWithFormat:@"%C",[_toUnicode unicharFromCIDString:unicodeChar]];
    [unicodeString appendFormat:@"%@",appendString];
    NSLog(@"%@",appendString); //1
}
NSLog(@"%@",unicodeString)//2 

appendString は印刷されますが、unicodeString は印刷されません。これはバイトの問題のためですか?? appendString を保持しようとしましたが、それでも印刷されません

*UPDATEDが答えを見つけました

4

2 に答える 2

2

問題は %C が 16 ビットの unichar 用であることがわかったので、NSString に追加したい場合は、8 ビットの %c を使用する必要があります。これは完全に機能します。

NSString *appendString = [NSString stringWithFormat:@"%c",[_toUnicode     unicharFromCIDString:unicodeChar]];
[unicodeString appendFormat:@"%@",appendString];
于 2011-10-27T09:21:23.923 に答える