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 的另一个用处是 能够确保日志输出的时候是按照过滤器的说明限制的,也让过滤器也作为一项输出到日志中。
例如:
[java] view plaincopy
- private static final String TAG = "TEST";
[java] view plaincopy
- 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中显示乱码的办法:
后续:
解决Android LogCat 输出乱码的问题(转)