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

Miq*_*uel 27 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"
    }   
}
Run Code Online (Sandbox Code Playgroud)

撇号被打印输出中的unicode表示所取代.但是,从toJson方法返回的字符串字面上有"\","u","0","0","2","7"字符.

用json解码它实际上是有效的并且给出字符串"Apostrophe:'"而不是"Apostrophe:\ u0027".我应该如何解码它以获得相同的结果?

还有一个问题,为什么一个随机的unicode字符如ش得到的编码类似?

Gus*_*ors 47

默认情况下,gson Unicode会转义某些字符,其中'包含一个字符.(见HTML_SAFE_REPLACEMENT_CHARSJsonWriter完整的列表.)

要禁用它,请执行此操作

builder.disableHtmlEscaping();
Run Code Online (Sandbox Code Playgroud)