標籤:android json unicode
前言
從網路擷取JSON資訊的時候,有時我們會擷取到一些不知名的東西,比如下面的情況就是我擷取的json資訊:
可以看到artist_name我所希望的是歌手的名字,結果出來的卻是一堆不知道什麼東西的編碼,我大概的猜測一下,它有可能就是UniCode編碼,因為它和UniCode編碼比較相像,原因有二:
- UniCode的基本格式是->\u2345之類的形式,總是4個數字和字母的集合,而給定的那串字串的長度就是4的倍數,這就使得很有可能它就是UniCode編碼。
- UTF-8編碼是一大串不知名的東西,給的字串長度不符合(排除法)
既然我猜測它是UniCode編碼那麼我就要驗證一下,使用了一個UniCode編碼的轉換工具,我得到了下面的結果:
看來我的猜測是正確的,那麼接下來該怎麼用代碼去解析它呢,總不能手動用工具去解析吧,這是肯定不行的,所以我還是百度了一下(自己也不是懂~~),最終得到了一些答案。
實現
實現的思路還是比較清晰的,代碼也不是很難,額~~應該說是很簡單的吧,看了就知道了。
- 將得到的字串每四個一組分割得到
- 使用Integer類的方法將該四個一組的字串分別得到相應的十進位大小的int值(PS:原來那四個一組是16進位的數啊,看著也挺像的)
- 將int值轉換為char類型的字元
- 把char類型轉換成String
- 把得到的每一個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編碼