web-dev-qa-db-ja.com

誰かが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でデコードすると実際に機能し、「アポストロフィ:\ u0027」ではなく文字列「アポストロフィ: '」が表示されます。同じ結果を得るには、どのようにデコードすればよいですか?

さらに追加の質問、なぜasなどのランダムなUnicode文字が同様にエンコードされないのですか?

30
Miquel

デフォルトでは、gson Unicodeは特定の文字をエスケープします。そのうちの' 1であります。 (見る HTML_SAFE_REPLACEMENT_CHARS in JsonWriter 完全なリスト。)

これを無効にするには、

builder.disableHtmlEscaping();
46