7

サーバーからメッセージを受信するアプリケーションがあります。これらのメッセージにはキリル文字が含まれている場合があります。しかし、受信したデータを NSString に変換すると、キリル文字ではなく「\u041c\u0430\u043a」記号のみが取得されます。

   NSData *responceData = ....;

   NSString* responceString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

正しいシンボルを取得するにはどうすればよいですか?

4

1 に答える 1

17

もっと簡単な解決策があります。

データにリテラル Unicode エスケープ シーケンスが含まれている場合 (つまり、\u041c\0430\043aUnicode エスケープが適用されていない純粋な ASCII 文字として)、これはその文字列の UTF-8 エンコーディングではありません。あなたがしたいNSNonLossyASCIIStringEncoding

NSData *responseData = ....;

NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSNonLossyASCIIStringEncoding];

responseStringまさにあなたが期待するものになります。

于 2012-04-13T19:40:41.460 に答える