Android解析UniCode編碼

來源:互聯網
上載者:User

標籤: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串連起來就是解析出來的內容

    很明顯我們需要寫一個函數,下面就是My Code,我就不做過多的解釋了,都是很簡單的內容。

    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編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.