码迷,mamicode.com
首页 > 移动开发 > 详细

Android解析UniCode编码

时间:2015-07-02 10:12:52      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:android   json   unicode   

前言

    从网络获取JSON信息的时候,有时我们会获取到一些不知名的东西,比如下面的情况就是我获取的json信息:

技术分享

    可以看到artist_name我所希望的是歌手的名字,结果出来的却是一堆不知道什么东西的编码,我大概的猜测一下,它有可能就是UniCode编码,因为它和UniCode编码比较相像,原因有二:

  • UniCode的基本格式是->\u2345之类的形式,总是4个数字和字母的集合,而给定的那串字符串的长度就是4的倍数,这就使得很有可能它就是UniCode编码。
  • UTF-8编码是一大串不知名的东西,给的字符串长度不符合(排除法)

      既然我猜测它是UniCode编码那么我就要验证一下,使用了一个UniCode编码的转换工具,我得到了下面的结果:

技术分享

     看来我的猜测是正确的,那么接下来该怎么用代码去解析它呢,总不能手动用工具去解析吧,这是肯定不行的,所以我还是百度了一下(自己也不是懂~~),最终得到了一些答案。


实现

      实现的思路还是比较清晰的,代码也不是很难,额~~应该说是很简单的吧,看了就知道了。

  1. 将得到的字符串每四个一组分割得到
  2. 使用Integer类的方法将该四个一组的字符串分别得到相应的十进制大小的int值(PS:原来那四个一组是16进制的数啊,看着也挺像的)
  3. 将int值转换为char类型的字符
  4. 把char类型转换成String
  5. 把得到的每一个String连接起来就是解析出来的内容

    很明显我们需要写一个函数,下面就是我的代码,我就不做过多的解释了,都是很简单的内容。

    String getStrFromUniCode(String unicode){
        String str = "";
        for(int i=0;i<unicode.length();i+=4){
            String s = "";
            for(int j=i;j<i+4;j++){
                s+=String.valueOf(unicode.charAt(j));
            }
            str+=String.valueOf((char)Integer.valueOf(s, 16).intValue());
        }
        return str;
    }

     我解析之后再程序运行的结果如下:

技术分享

    可以看到,程序正确运行了,可见方法还是对的,虽然我不知道是不是有相关已经封装好的方法可以直接使用,但是现在就先这么来吧。


小结

    经过这次的经历,我发现遇到问题还是不能太着急,要根据自己所学的内容进行大胆的猜测,有时候可能就是根本不沾边的内容,但说不定就是对的,^_^!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android解析UniCode编码

标签:android   json   unicode   

原文地址:http://blog.csdn.net/programchangesworld/article/details/46716541

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!