16

編集: NSLog出力はシミュレーターではうまく機能しますが、実際のデバイスに接続すると機能しません。そして、それはバグのようです—http://openradar.appspot.com/11148883。また、LLDBに関連している場合もあり、XcodeをGDBに切り替えると問題が解決します。LLDBでうまく機能するJetBrainのAppCodeも可能です。


アプリケーションに大量のUnicode文字列があり、 NSLog(@ "%@"、aString)のようなものを使用してこれらの文字列のいずれかを出力しようとすると、文字列内のすべてのASCII文字が正常に印刷されますが、すべてキリル文字です。文字がめちゃくちゃになるので、代わりに

newLocation: coordinate:60.019584,30.284954 'Удельная'

私が得ている:

newLocation: coordinate:60.019584,30.284954 '–ü–æ–∫–ª–æ–Ω–Ω–æ–≥–æ—Ä—Å–∫–∞—è'

そして、そのような出力でデバッグを行うのは非常に困難です。そのアプリはロシア市場のみを対象としているため、ロケールを変更して英語の文字列を使用することはできません。

では、NSLogをUnicode文字でうまく機能させる方法はあるのでしょうか。そして、私はある種のワンライナーソリューションのみを探しています。半分のページのコードを記述してUnicode文字を出力する方法がいくつかあることを知っていますが、もっと短いものを探しています。理想的には、すべてが機能するNSStringのメソッドを探しています。例えば

NSLog(@"%@", [aString someThingThatMakesUnicodeWorkWithXcodeConsole]);
4

5 に答える 5

4

はい、もちろん、キリル文字を含む文字列を作成して出力することができます。私がObjective-Cを学んでいたとき、私は最初に同じ問題を抱えていました(私もロシア語の単語やそのようなものを扱っていました)。したがって、解決策は、文字列を次のような他の形式に変換することです。

NSString *string = [NSString stringWithCString:"Привет, как дела?" encoding:4];
NSLog(@"%@", string);

また

NSString *string = [NSString stringWithUTF8String:"Этот вариант короче!"];
NSLog(@"%@", string);

お役に立てば幸いです。

PSこれは、文字列をCスタイルの文字列として作成し、それらのエンコーディングパラメータを4(UTF-8)に設定する必要があることを意味します。NSStringのNSStringEncodingのドキュメントで、使用可能なパラメータのすべてのリストを確認できます。

于 2012-04-19T12:52:13.513 に答える
3

私の知る限り、一部のXcodeバージョンのNSLog()とLLDBに関連しています。次のいずれかのソリューションを試してみてください。

  • Xcode Organizer >> Devices >> your device>>Consoleのログインを確認してください。
  • LLDBを使用している場合は、LLDBの代わりにGDBをデバッガーとして使用してください。これは、スキーマオプションから変更できます。以下の「cocos2dman」によるコメントの手順を参照してください。
  • Xcode4.3.2にアップグレードします。この問題は解決したと言う人もいますが、私自身は確認していません。
于 2012-04-20T12:19:14.200 に答える
1

それをUTF8文字列に変換してみてください。

NSString *str = [aString UTF8String]
 NSLog(@"%@", str);

お役に立てれば。

于 2012-04-19T11:37:52.290 に答える
0

次のように入れてみてくださいNSLog(@"%@", aString);

編集 :

UTF8文字列に変換できます。これはあなたを通り抜けることができます。

NSString *str = [aString UTF8String];

お役に立てれば。

于 2012-04-19T11:35:40.477 に答える
0

これを試して。わたしにはできる。

NSLog(@"%@", [NSString stringWithCString:[[places description] cStringUsingEncoding:NSASCIIStringEncoding] encoding:NSNonLossyASCIIStringEncoding]);
于 2015-10-07T07:34:24.993 に答える