使用gson在解析unicode時遇到的問題

以前在用gson解析的時候未記錄下來,因此今天作一個小的總結,java

好比遇到像這種"\u003d"的unicode的字符,咱們想解碼這個字符,用gson能夠這樣表達apache

Gson gson=new Gson();
        String s2 = "\"{\\\"hi\\\":\\\"\\u003d\\\"}\"";
        System.out.println("s2:"+s2);
        String s = gson.fromJson(s2, String.class);
        System.out.println(s);

上面的輸出結果爲json

s2:"{\"hi\":\"\u003d\"}"api

{"hi":"="}工具

可見傳入到json中的字符串必須是帶轉義字符的,且格式必須是正確的,不然會出錯,ui

一樣的,解碼一個unicode字符也可使用URLDecoder,這個對unicode的直接解析比較方便。編碼

代碼以下:spa

	String ss = URLDecoder.decode("\u003d","utf-8");
		System.out.println(ss);

  上面的代碼輸出以下:.net

=3d

該方法較上一種方便不少。

 

 

另外利用gson轉換成json字符串的時候會自動編碼特殊字符,若是要忽略此功能,則使用

new GsonBuilder().disableHtmlEscaping().create()

建立gson對象便可。

------------------------------------------------------------------------------------------------------

此處分割線,樓主最近又發現一個奇怪的問題,上面的URLDecoder中傳入的若是是這種字面量,他是能夠解析的,其實直接用java的println打出來也是中文,可是若是不是這種字面量,那問題就比較麻煩了,由於即便是同樣的字符串,他也是不能解碼的,,後來樓主在網上的一片博客中找到了另外一種方法,即便用org.apache.commons.lang.StringEscapeUtils#unescapeJava(String) 這是使用apache提供的包裏的工具,若是你的工程裏沒有引用這個,也不用擔憂,原博客提供了另一種方法,此處貼上博客地址,http://blog.csdn.net/djun100/article/details/12128057  他好像也是轉的,,,因此就找不到原做者了,,,,

相關文章
相關標籤/搜索