मेरा सर्वलेट सिर्फ जेएसओएन प्रतिक्रियाओं के लिए यूटीएफ -8 का उपयोग नहीं करेगा।मेरा सर्वलेट यूटीएफ -8 में जेएसओएन अनुरोधों का जवाब क्यों नहीं देगा?
MyServlet.java:
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws Exception {
PrintWriter writer = res.getWriter();
res.setCharacterEncoding("UTF-8");
res.setContentType("application/json; charset=UTF-8");
writer.print(getSomeJson());
}
}
लेकिन विशेष वर्ण दिखाई नहीं दे रहे, और जब मैं हेडर कि मैं Firebug में वापस हो रही है जांच, मैं Content-Type: application/json;charset=ISO-8859-1
देखते हैं।
मैंने अपनी सर्वलेट निर्देशिका में grep -ri iso .
किया था, और कुछ भी नहीं आया, इसलिए कहीं भी मैं आईएसओ -885 9 -1 को स्पष्ट रूप से सेट नहीं कर रहा हूं।
मुझे यह भी निर्दिष्ट करना चाहिए कि मैं इसे एक्लेप्से में टॉमकैट 7 पर एक विकास वातावरण के रूप में एक जे 2 ईई लक्ष्य के साथ चला रहा हूं, सोलारिस 10 के साथ और जो कुछ भी वे अपने वेब सर्वर पर्यावरण (किसी और को यह कहते हैं) उत्पादन वातावरण के रूप में कहते हैं, और व्यवहार वही है।
मैंने यह भी पुष्टि की है कि सबमिट किया गया अनुरोध यूटीएफ -8 है, और केवल प्रतिक्रिया आईएसओ -885 9 -1 है।
अद्यतन
मैं प्रतिबिंबित करने के लिए है कि मैं PrintWriter बोल रहा हूँ इससे पहले कि मैं वर्ण एन्कोडिंग सेट कोड में संशोधन किया है। मैंने इसे अपने मूल उदाहरण से छोड़ा, और अब मुझे एहसास हुआ कि यह मेरी समस्या का स्रोत था। मैंने here पढ़ा है कि आपको HttpServletResponse.getWriter()
पर कॉल करने से पहले वर्ण एन्कोडिंग सेट करना होगा, या getWriter इसे आपके लिए आईएसओ -8859-1 पर सेट करेगा।
यह मेरी समस्या थी। तो उपर्युक्त उदाहरण
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws Exception {
res.setCharacterEncoding("UTF-8");
res.setContentType("application/json");
PrintWriter writer = res.getWriter();
writer.print(getSomeJson());
}
}
आपके "अपडेट" के लिए धन्यवाद, यह वही है जो मैं ढूंढ रहा हूं: पहला सेट कैरेक्टर एन्कोडिंग, दूसरा लेखक प्राप्त करें। –