LogcatコマンドプロンプトでUTF-8を正しく表示する
Androidプラットホームの標準の文字エンコーディングはUTF-8だが、日本ロケールのWindowsでSDKのツールを使うと、OS標準のエンコーディング(日本の場合MS932)以外に上手く対応できず、英数字以外は正しく表示できない場合がある。
具体的にはログを出力するLogcatだが、Eclipse ADTのDDMSパースペクティブでは以下のように日本語が文字化けしてしまう。
04-03 17:49:15.649: DEBUG/Log test(444): æ\æ¬èªã§æ£ãã表示ããã¦ããããª?
同機能はEclipseからフォントを変更できるのだが、エンコーディング自体をUTF-8に変更できる訳ではないので、どんなフォントにしても結局日本語を正しく表示することができない。
Logcatはコマンドプロンプトから実行することもできるので、こちらから実行してみるが、
D:\Users\kazzz>adb logcat : D/Log test( 490): 譌・譛ャ隱槭〒豁」縺励¥陦ィ遉コ縺輔l縺ヲ縺・k縺九↑?
とやはり文字化けしてしまう。
ここからが本題だが、コマンドプロンプトはコードページを切り替えることが出来るので、以下のようにchcpコマンドでUTF-8に変更することができる。
chcp 65001 : Active code page: 65001 D:\Users\kazzz>
これで正しく表示できるかと思いきや、
D/Log test( 490): æ—\本語ã§æ£ã—ã表示ã•ã‚Œã¦ã„ã‚‹ã‹ãª?
駄目だ。これはコードページによる正しいエンコーディングになったものの、フォントがラスターフォントのままのせいだ。
正しく表示するためには、コードページを変える前に※日本語を正しく表示できる"MS ゴシック"フォントに変更しておかなくてはならない。(一度変更しておけば、同じショートカットからは変更が保存されている)
(Windows 7)
これで正しく日本語で表示される。
D/Log test( 490): 日本語で正しく表示されているかな?
※一度でもコードページを65001(UTF-8)に変更してしまうと日本語フォントは選択できなくなってしまうので、コードページを変える前にフォントを変えておく必要がある。
(Windows 7)