在下面的简约示例中:
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字符的编码方式不同?
答案 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");
这解决了我的问题。