スケルトン・エピ

letsspeakのブログです。

NSLogで日本語を表示できない事もある

こちら随分前ですが、解決策が見つかったので追記しておきます。

Debuggerの問題で、LLDBだと日本語が正常に吐き出せないようです。

DebuggerをGDBに変更すれば今の所100%日本語が吐き出せているので、下記に手順を書いておきます。

 

1.上部のメインメニューから Product -> Edit Scheme...を選択

f:id:letsspeak:20120709013651p:plain

 

2.InfoタブのDebuggerをLLDBからGDBに変更。

f:id:letsspeak:20120709013712p:plain

 

以上で問題なく日本語が表示されるようになるかと思います。

-----

 

XcodeのNSLogでコンソールに日本語をデバッグ出力しようとしても出来ない事がある。

結論から言ってしまいますが、コンソールへの日本語デバッグ出力がどうしてもうまくいかない事があるようなので、NSLogを信用するなという事です。iOS開発ならとりあえずUILabelやNotificationでも良いですが、ロジックを疑う前に画面に表示してみてください。


仕事で使っている PCがまさにその状況になっていて、体感では7割方の日本語は正しく表示されますが、稀に日本語の半分が消えたり、文字化けしたり、日本語部分どころか該当の行がまるごと消えてしまったりします。Xcodeエディタ部分のエンコード設定、コンソールのエンコード設定、Terminalのエンコード設定、initWithUTF8Stringなど考えられうる設定を試しましたが駄目でした・・・。

 

可能性として、

・関係無い箇所のメモリリーク(可能性としては多いにあり得る、行で消えてるし。)
Xcodeの設定ファイルの悪さ(com.Apple.Xcodeで検索しましたが見当たりませんでした。)

 等々考えられますが、もし発生した場合に設定をちまちま見直したり、ロジックを疑って無駄な工数を割くよりも、まずは画面に表示させて確認をした方が効率は断然良いと思います。私の環境では画面に表示させられない事はありませんでした。

 私の環境ですが、英語圏用macbook+snowLeopard + Xcode4.2 から 現在のLion+Xcode4.3 へ移行した辺りで気づきました。 移行時にDeveloperをゴミ箱に移動したのが駄目だったのか、あるいは最初から発生していたのか、まったく原因がつかめないです。ARC環境、noARC環境の両方で発生しています。もし同じ現象が発生した方がいましたら、気を落とさずにプロジェクトを前に進めましょう!

 最後になりますが、もし原因をご存知の方がいらっしゃいましたら、
対処方法等についてご教授頂けますと幸いです!!