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中顯示亂碼的辦法:
后續: