何時間もの研究の後、私はあきらめました。Webサービスからテキストデータを受け取ります。場合によっては、テキストは日本語であり、WSはUnicodeバージョンを返します。例:\ U00e3 \ U0082\U008fこれは日本の文字だと知っています。
このUnicode文字または文字列をUILabel内に表示しようとしています。単純なsetTextメソッドは正しい文字を表示しないため、次の(コピーされた)ルーチンを使用しました。
unichar unicodeValue = (unichar) strtol([[[p innerData] valueForKey:@"title"] UTF8String], NULL, 16);
char buffer[2];
int len = 1;
if (unicodeValue > 127) {
buffer[0] = (unicodeValue >> 8) & (1 << 8) - 1;
buffer[1] = unicodeValue & (1 << 8) - 1;
len = 2;
} else {
buffer[0] = unicodeValue;
}
[[cell title] setText:[[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding] ];
しかし、成功しません。UILabelは空です。1つの方法は、文字を16進数に変換してから、16進数から文字列に変換できることを知っています...もっと簡単な方法はありますか?
解決済み
まず、サーバーがUNICODECODEPOINTSではなくUTF8を送信していることを確認する必要があります。私が見つけた唯一の方法は、UNICODE文字を含む文字列をjson_encodeすることです。次に、iOSユーザーがこのリンクをたどってエスケープを解除するObjective C / Cocoaを使用してユニコード文字をエスケープ解除します。つまり、\ u1234