2012-07-06 13 views
18

निम्नलिखित minimalistic उदाहरण में:कोई व्यक्ति जीसन के यूनिकोड एन्कोडिंग को स्पष्ट कर सकता है?

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

apostrophe यह द्वारा बदल दिया जाता है प्रिंटआउट में यूनिकोड प्रतिनिधित्व है। हालांकि, स्ट्रिंग toJson विधि से वापस आ गई है जिसमें शाब्दिक रूप से वर्ण '\', 'u', '0', '0', '2', '7' हैं।

जेसन के साथ इसे डीकोड करना वास्तव में काम करता है और "Apostrophe: \" के विपरीत स्ट्रिंग "Apostrophe:" "देता है। एक ही परिणाम प्राप्त करने के लिए मुझे इसे कैसे डीकोड करना चाहिए?

और एक अतिरिक्त सवाल, क्यों एक यादृच्छिक यूनिकोड चरित्र जैसे कि पी को एन्कोड किया गया है?

उत्तर

35

डिफ़ॉल्ट रूप से, जीसन यूनिकोड कुछ पात्रों से बच निकलता है, जिनमें से ' एक है। (JsonWriter में HTML_SAFE_REPLACEMENT_CHARS देखें पूरी सूची के लिए।)

इसे निष्क्रिय करने के लिए, कर

builder.disableHtmlEscaping(); 
+0

धन्यवाद! साथ ही, मैंने देखा कि जेसन रीडर 'JsonReader.readEscapeCharacter()' का उपयोग करके ऐसे पात्रों को डीकोड करता है, जो वास्तव में काफी जटिल दिखता है। आपका बहुत बहुत धन्यवाद! – Miquel

0

एन्कोड करने के लिए

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

यह मेरी समस्या हल के लिए निम्न कोड का प्रयोग करें।

संबंधित मुद्दे