说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

帮助ADT改进DDMS中的Logcat中文乱码问题

HTML文档下载 WORD文档下载 PDF文档下载
帮助ADT改进DDMS中的Logcat中文乱码问题

作者:Android开发网


  有的时候我们调试Android应用可能涉及中文内容,但是在DDMS的Logcat下显示中文时为乱码,这里大家可以通过自己编译SDK来解决,有关编译Android SDK方法可以参考如何编译Windows平台的Android SDK 下面一起看下哪个代码存在问题吧。
  在Android源码DDMS中我们找到 MultiLineReceiver 这个类,对应GIT开源在development/tools/ddms/libs/ddmuilib/src/com/android/ddmuilib/,最主要的就是有关String实例化时最后一个参数,看到ISO-8859-1了吧,我们将这个换成gb2312就可以很好的显示简体中文了,繁体嘛可以考虑big5这种编码等等了,当然了Android123推荐大家使用UTF-8这种兼容性最好的。

 public abstract class MultiLineReceiver implements IShellOutputReceiver {

     public final void addOutput(byte[] data, int offset, int length) {
         if (isCancelled() == false) {
             String s = null;
             try {
                 s = new String(data, offset, length, "ISO-8859-1"); //问题在这里,ISO-8859-1就是Latin-1我们俗称西欧语言
             } catch (UnsupportedEncodingException e) {
                 // normal encoding didn't work, try the default one
                 s = new String(data, offset,length);
             }

             // ok we've got a string
             if (s != null) {
                 // if we had an unfinished line we add it.
                 if (mUnfinishedLine != null) {
                     s = mUnfinishedLine + s;
                     mUnfinishedLine = null;
                 }


                 mArray.clear();
                 int start = 0;
                 do {
                     int index = s.indexOf("\r\n", start);

                     // if \r\n was not found, this is an unfinished line
                     // and we store it to be processed for the next packet
                     if (index == -1) {
                         mUnfinishedLine = s.substring(start);
                         break;
                     }


                     String line = s.substring(start, index);
                     if (mTrimLines) {
                         line = line.trim();
                     }
                     mArray.add(line);

                     // move start to after the \r\n we found
                     start = index + 2;
                 } while (true);

                 if (mArray.size() > 0) {

                     String[] lines = mArray.toArray(new String[mArray.size()]);

                     // send it for final processing
                     processNewLines(lines);
                 }
             }
         }
     }
 }
OpenCloud 2015报名超预期 近20位讲师会前采访提前看 硅谷公司人才招聘那些事儿——硅谷“超级面试官”董飞专访 一切为了用户体验:揭秘京东首页改版背后的故事 TIOBE 2015年4月编程语言排行榜:Java王者归来 三大主题技术峰会开幕在即 OpenCloud 2015参会者提醒 做一个网上考试系统,遇到的问题 菜鸟求教!!!! 关于VB数据库问题!!超急!!!!谢谢各位前辈 求一SQL语句写法 谁能该我Rose2002的下在地址,我找过好多都不能下载,谢谢!!! 请问如何用程序定时重起电脑? 我的IE首页被一个网站改了。 help me !how to install eclipse on red hat8.0? 提问高手:如何改变ListView中行的高度??? 河南人工挖孔桩挖土套什么定额?不分挖土深度和土壤类 用木炭还原氧化铜的实验如下图所示,请回答下列问题( 挖土深度10m 套哪个定额 高纯度的氧化铜可用作颜料、有机合成催化剂等,以下是 人工挖土石方,定额深度是按六米内考虑的,超6m外人 斗容量1m3正铲挖土机,挖四类土,装车,深度在2m 一道机械原理计算自由度问题.A处那个不算一个低副吗 铁合金的产品都有什么? 一道关于机械原理计算机构自由度的题(最好能具体说一 印度筹谋在中巴边界建14条铁路线用于菲律宾:对香港人质事件赔款不用公款 伊拉克汽车爆炸 一日致死56人奥巴马3年前已知监控默克尔周边外交需要邻国间更深入地相互理解2015中国真皮标志/箱包/童鞋排头接连遭遇兑付风险 门户网站P2P平台《2015中国皮革行业排头品牌发展报中国可能正在成为第二个日本,将要失去中国皮业品牌大会·北京论坛暨2015金牌小卒火爆兵王九天仙境二代三国大剑游侠阿豹排龙天险旅游韩村河旅游高迁古民居旅游月亮湾公园旅游荔林公园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘