2012-07-06 71 views
18

在下面的简约例如:有人可以澄清Gson的unicode编码吗?

import com.google.gson.Gson; 
import com.google.gson.GsonBuilder; 

public class GsonStuff { 

    public static void main(String[] args) { 
     GsonBuilder builder = new GsonBuilder(); 
     Gson gson = builder.create(); 
     System.out.println(gson.toJson("Apostrophe: '")); 
     //Outputs: "Apostrophe: \u0027" 
    } 
} 

撇号被它所取代的打印输出Unicode表示。但是,从toJson方法返回的字符串字面上具有字符'\','u','0','0','2','7'。

使用json对其进行解码实际上工作并给出字符串“Apostrophe:”,而不是“Apostrophe:\ u0027”。我应该如何解码才能得到相同的结果?

还有一个问题,为什么没有随机的unicode字符,比如Ô获得相似的编码?

回答

35

默认情况下,gson Unicode转义某些字符,其中'是一个字符。 (有关完整列表,请参阅JsonWriterHTML_SAFE_REPLACEMENT_CHARS。)

要禁用它,做

builder.disableHtmlEscaping(); 
+0

谢谢!此外,只是看到JsonReader使用'JsonReader.readEscapeCharacter()'解码这些字符,实际上看起来相当复杂。非常感谢! – Miquel 2012-07-06 12:13:52

0

使用下面的代码编码

response.setCharacterEncoding("UTF8"); // this line solves the problem 
response.setContentType("application/json"); 

这解决了我的问题。

相关问题