2012-07-06 23 views
18

: kesme işareti bunun yerini alırBirisi Gson unicode kodlamasını netleştirebilir mi? Aşağıdaki minimalistik örnekte

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" 
    } 
} 

çıktıda Unicode temsil var. Ancak, toJson yönteminden döndürülen dize, tam olarak '\', 'u', '0', '0', '2', '7' karakterlerini içerir.

Json ile çözümlemek aslında "Apostrophe:" u "Apostrophe: \ u0027" yerine çalışır ve "Apostrophe: '" dizesini verir. Aynı sonucu elde etmek için kodu nasıl çözmeliyim?

Ve ek bir soru, neden ش gibi kodlanmış bir unicode karakteri benzer şekilde kodlanmıyor?

cevap

35

Varsayılan olarak, gson Unicode, ''un bir tanesi olan belirli karakterlerden kaçar. ,

bu devre dışı bırakmak için (. Tam liste için JsonWriter içinde HTML_SAFE_REPLACEMENT_CHARS Bkz)

builder.disableHtmlEscaping(); 
+0

Teşekkürler! Ayrıca, JsonReader'ın aslında oldukça karmaşık görünen “JsonReader.readEscapeCharacter()” kullanarak bu karakterleri deşifre ettiğini gördük. Çok teşekkürler! – Miquel

0

Bu sorunumu çözdü

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

kodlamak için şu kodu kullanın yapmak.

İlgili konular