Android解析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;
    }

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

这里写图片描述

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


小结

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

【补充-2015:8:12】
因为在计算机上不能直接显示出来,但是在android手机上式可以直接看到所表示的内容,上面我所说的可能有点画蛇添足了,当时还不是太了解,现在明白了。当你看不懂所得到的信息,可以利用上面的工具来得到内容,当然也可以直接在android上显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值