0

UTF8エンコーディングで奇妙な動作があります:

例:シミュレーターで実行する場合

NSString *uni   = @"\U0001d11e";
NSString *uni2  = [[NSString alloc] initWithUTF8String:"\xF0\x9D\x84\x9E"];
NSString *uni3  = @"";
NSLog(@"unicode: %@ and %@ and %@",uni, uni2, uni3);

私は期待される結果を得ました:

unicode:  and  and 

しかし、実際のデバイスに実行したときの出力は次のとおりです。

unicode: ùÑû and ùÑû and ùÑû

理由がわかりません。それはコンパイルの回避策ですか、それとも私が理解できなかったことですか? @"" コンストラクトは ASCII 文字しか使用できないことを知っています。しかし、なぜこれがシミュレーターで動作しているのでしょうか? 実際のデバイスで動作させる方法についてのアイデアはありますか? どうも

4

1 に答える 1

1

すべて正常に動作しており、バイトは正しく受信されています。デバイスがUTF-8 ではなくMac OS Romanとしてデコードしているだけです。入力が UTF-8 であることをデバイスに指定するだけです。その方法がわからない場合は、詳細を提供する必要があります。

于 2012-12-10T15:19:44.800 に答える