पर रीस्टलेट द्वारा स्कैम्बल हो रही है मेरे पास एपइंजिन पर होस्ट की गई एक सरल रीस्टलेट सेवा है। यह तारों के साथ मूल सीआरयूडी संचालन करता है और जब मैं इसे कर्ल (सभी क्रियाओं के लिए) के साथ परीक्षण करता हूं तो यूटीएफ -8 अक्षरों के सभी प्रकार के साथ अच्छी तरह से काम कर रहा है। ऊपरयूटीएफ -8 स्ट्रिंग्स जीएई
// set response type
resp.setContentType("application/json");
// Create the client resource
ClientResource resource = new ClientResource(Messages.SERVICE_URL + "myentity/id");
// Customize the referrer property
resource.setReferrerRef("myapp");
// Write the response
resource.get().write(resp.getWriter());
है काफी सब मैं सर्वलेट में है:
यह एक और AppEngine एप्लिकेशन पर एक सर्वलेट में आयोजित एक सरल restlet ग्राहक द्वारा सेवन किया जाता है। बहत सादा।
सर्वलेट jQuery ajax के माध्यम से शुरू हो जाती है, और json है कि मैं वापस पाने के अच्छी तरह से गठन किया गया और सब कुछ है, लेकिन समस्या यह है कि UTF-8 एन्कोडेड तार वापस तले आ रहे हैं, उदाहरण के लिए: Université de Montréal
Universit?? de Montr??al
हो जाता है।
मैं (सब कुछ करने से पहले) सर्वलेट में इस लाइन को जोड़ने की कोशिश की:
resp.setCharacterEncoding("UTF-8");
लेकिन केवल diference कि बजाय ??
होने का मैं Universitᅢᄅ de Montrᅢᄅal
मिल (मैं भी नहीं जानता कि पात्रों में से किस तरह उन है हैं, एशियाई मुझे लगता है)।
मुझे 100% यकीन है कि रीसेट सेवा ठीक है, क्योंकि लाइन से लाइन को डीबग करने के अलावा मैं इसे सीएमडी लाइन से कर्ल के साथ परीक्षण करने में सक्षम हूं और यह अच्छी तरह से गठित तारों को वापस कर रहा है।
फ़ायरफ़ॉक्स से प्रतिक्रिया के http शीर्षलेख को देखकर (जावास्क्रिप्ट के माध्यम से सर्वलेट को कॉल करते समय) मैं देख सकता हूं कि एन्कोडिंग वास्तव में यूटीएफ -8 है, जैसा कि अपेक्षित है। हर संभव संबंधित लेख को पढ़ने में संघर्ष के घंटों के बाद मैं this restlet discussion पर आया और देखा कि वास्तव में मेरे पास प्रतिक्रिया के http शीर्षलेख पर Transfer-Encoding: chunked
है। मैं प्रस्तावित समाधान की कोशिश की (ओवरराइड ClientResource.toRepresentation, किसी भी अच्छे नहीं किया तो मैं करने की कोशिश की restlet 2.1 के रूप में ClientResource.setRequestEntityBuffering(true)
साथ susggested, वहाँ कोई भाग्य या तो), लेकिन मैं अपने मुद्दे को आश्वस्त नहीं कर रहा हूँ सब परTransfer-Encoding: chunked
से संबंधित है।
इस बिंदु पर मैं विचारों से बाहर हूं, और मैं वास्तव में किसी भी सुझाव की सराहना करता हूं!
o_Oअद्यतन:
मैं एक क्लासिक UrlConnection के साथ एक पुस्तिका प्राप्त कर की कोशिश की और स्ट्रिंग वापस ठीक आ रहा है: सब RESTful और फैंसी होने के लिए
URL url = new URL(Messages.SERVICE_URL + "myentity/id");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, "UTF-8");
resp.getWriter().print(writer.toString());
इतना ... लेकिन अभी भी मुझे कोई संकेत नहीं है कि मूल संस्करण क्यों काम नहीं करता है! :/
चंक किए गए स्थानांतरण एन्कोडिंग को वर्णमाला समस्याओं से असंबंधित होना चाहिए ... यदि आप कच्चे स्ट्रिंग को 'resp.getWriter()' में प्रश्न में कच्चे स्ट्रिंग को लिखते हैं, तो पूरी तरह से रीसेट को छोड़कर, क्या यह ठीक से स्थानांतरित हो जाता है? – bdonlan
क्या आपका मतलब है 'मैनुअल' सर्वलेट से मेरी सेवा में मिलता है? – JohnIdol
अपडेट देखें, अगर मैं रीसेटलेट बाईपास करता हूं तो यह ठीक काम करता है। मुझे लगता है कि यह एक रेस्टलेट बग या smt O_o – JohnIdol