有人可以澄清Gson的unicode编码吗?

时间:2012-07-06 11:17:30

标签: java unicode gson

在下面的简约示例中:

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字符的编码方式不同?

2 个答案:

答案 0 :(得分:44)

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

要禁用此功能,请执行

builder.disableHtmlEscaping();

答案 1 :(得分:-2)

使用以下代码进行编码

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

这解决了我的问题。