Android日誌系統提供了記錄和查看系統調試資訊的功能。日誌都是從各種軟體和一些系統的緩衝區中記錄下來的。
可以使用adb的logcat 命令來查看系統日誌緩衝區的內容,但是在實際操作時,會發現在CMD的DOS介面上面,使用logcat命令直接輸出的中文內容是亂碼。如:
而這個問題只出現在使用logcat將日誌直接列印在當前的DOS視窗的時候會出現;而使用logcat將日誌儲存為檔案,再使用文本編輯工具開啟的則顯示正常,。
很明顯是由於DOS視窗顯示的編碼同logcat日誌中不同導致的亂碼問題。DOS視窗預設的編碼是GBK,而LogCat列印的是UTF-8的編碼,所以要設定DOS字元編碼:
1、 在當前命令列下輸入 chcp
65001,按斷行符號鍵。這時,當前字碼頁使用的就是UTF-8編碼了。
2、修改視窗屬性,改變字型在命令列標題列上點擊右鍵,選擇"屬性"->"字型",將字型修改為True Type字型"Lucida Console",然後點擊確定將屬性應用到當前視窗。
3、這時候再使用LogCat ,控制台顯示中文了、
補充部分字元編碼對應代碼:
65001——UTF-8
936——簡體中文
950——繁體中文
437——美國/加拿大英語
932——日文
949——韓文
866——俄文
附註:
LOGCAT的使用
[adb] logcat [<option>] … [<filter-spec>] …
過濾器語句按照下面的格式描tag:priority … , tag 表示是標籤,priority 是表示標籤的報告的最低等級. 從上面的tag的中可以得到日誌的優先順序. 你可以在過濾器中多次寫tag:priority
adb logcat TAG1:I TAG2:D *:S
上面運算式的最後的元素 *:S ,,是設定所有的標籤為”silent”,所有日誌只顯示有”View” and “MyApp”的,用 *:S 的另一個用處是 能夠確保日誌輸出的時候是按照過濾器的說明限制的,也讓過濾器也作為一項輸出到日誌中。
例如:
private static final String TAG = "TEST";
Date date = new Date(System.currentTimeMillis());DateFormat formatter_full = DateFormat.getDateInstance(DateFormat.FULL);Log.i(TAG, formatter_full.format(date));DateFormat formatter_long = DateFormat.getDateInstance(DateFormat.LONG);Log.i(TAG, formatter_long.format(date));DateFormat formatter_medium = DateFormat.getDateInstance(DateFormat.MEDIUM);Log.i(TAG, formatter_medium.format(date));DateFormat formatter_short = DateFormat.getDateInstance(DateFormat.SHORT);Log.i(TAG, formatter_short.format(date));
然後再CMD 中輸入: adb logcat TEST:I *:S
得到
以上部分轉載自:http://blog.sina.com.cn/s/blog_93731f0c0100vz0x.html
在Eclipse安裝外掛程式解決Eclipse中顯示亂碼的辦法:
後續: