दिलचस्प पोस्ट
मैं नई शैली कक्षाओं में अजगर के "जादू" तरीकों को कॉल कैसे रोक सकता हूं? कमांड लाइन पैरामीटर पार्स करने के लिए जावा लाइब्रेरी? उत्परिवर्ती बनाम अपरिवर्तनीय वस्तुओं सी ++ में इनलाइन कार्यों के लाभ? 'का प्रयोग' कथन नामस्थान के अंदर या बाहर होना चाहिए? क्या मेरे पास कई एक्सकोड संस्करण स्थापित हो सकते हैं? क्या कोई git-merge -dry-run विकल्प है? सी # का उपयोग करते हुए मैं .NET में स्वरूपित JSON कैसे प्राप्त करूं? webservice कॉल के बाद json_decode NULL लौटाता है क्या मॉलोक कार्यान्वयन सिस्टम को फ्री-एड मेमोरी वापस देगा? एंड्रॉइड डिवाइस को जागृत करें अंगुल्य 2 – विंडो को एक कोणीय 2 सेवा में इंजेक्ट करने के लिए असमर्थित प्रमुख.मोनोर संस्करण 52.0 एंड्रॉइड स्टूडियो में रेंडरिंग करते समय सी # परिवर्तनशील scoping: इस क्षेत्र में 'एक्स' घोषित नहीं किया जा सकता क्योंकि यह 'एक्स' के लिए एक अलग अर्थ देगी एक तारीख में मिलीसेकंड परिवर्तित (jQuery / JS)

जेएसपी / सर्लेट अनुरोध के रूप में यूनिकोड वर्ण कैसे पास करें।

बहुत सारी परीक्षण और त्रुटि के बाद मैं अभी भी समस्या का पता नहीं लगा सकता। जेएसपी, सर्वलेट, और डेटाबेस यूटीएफ -8 एन्कोडिंग को स्वीकार करने के लिए तैयार हैं, लेकिन फिर भी जब भी मैं request.getParameter का उपयोग करता हूं, जिस पर किसी भी दो-बाइट वर्ण हैं जैसे एम डैश वे टूटे हुए अक्षर के रूप में तले हुए होते हैं

मैंने डेटाबेस के लिए मैनुअल प्रस्तुतियां बनाई हैं और ये इन अक्षरों को स्वीकार करने में सक्षम है, कोई समस्या नहीं है। और अगर मैं सर्वलेट में डेटाबेस से पाठ खींचता हूं और इसे मेरे जेस्प पेज के रूप में प्रिंट करता हूं तो यह कोई समस्या नहीं दिखाती है।

केवल बार मैंने पाया है कि यह वापस आता है जब टूटे हुए अक्षर तब होते हैं जब मैं कोशिश करता हूं और इसे अनुरोध के द्वारा इसे प्राप्त करने के बाद कहीं और प्रदर्शित करता हूं।

क्या किसी अन्य व्यक्ति को यह समस्या है? मेरे द्वारा यह कैसे किया जा सकता है?

वेब के समाधान से एकत्रित समाधान "जेएसपी / सर्लेट अनुरोध के रूप में यूनिकोड वर्ण कैसे पास करें।"

ऐसा तब हो सकता है जब अनुरोध और / या प्रतिक्रिया एन्कोडिंग बिल्कुल ठीक से सेट नहीं है।

GET अनुरोधों के लिए, आपको इसे सर्वलेट कंटेनर स्तर पर कॉन्फ़िगर करना होगा। यह स्पष्ट नहीं है कि आप किस का उपयोग कर रहे हैं, लेकिन उदाहरण के लिए URIEncoding जो कि / URIEncoding में <Connector> तत्व में URIEncoding विशेषता द्वारा किया जाना है।

 <Connector ... URIEncoding="UTF-8"> 

पोस्ट अनुरोधों के लिए, आपको एक ऐसा फिल्टर बनाने की आवश्यकता होती है जिसे वांछित यूआरएल पैटर्न पर मैप किया जाता है, जिसमें उन सभी पोस्ट अनुरोध शामिल होते हैं। जैसे *.jsp या यहां तक ​​कि /* doFilter() में निम्नलिखित नौकरी करें:

 request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); 

HTML प्रतिक्रियाओं और सबमिट किए गए HTML फ़ॉर्म इनपुट मानों की क्लाइंट साइड एन्कोडिंग के लिए, आपको जेएसपी पृष्ठ एन्कोडिंग सेट करना होगा। यह JSP के शीर्ष पर जोड़ें (आप संभवतः पहले से ही यह ठीक से दिया है कि यूटीएफ -8 के सीधे फॉर्म डीबी का प्रदर्शन ठीक काम करता है)।

 <%@page pageEncoding="UTF-8" %> 

या प्रत्येक एक जेएसपी पर प्रतिलिपि को रोकने के लिए, इसे वेब। web.xml में एक बार कॉन्फ़िगर करें:

 <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> 

स्रोत कोड फ़ाइलों और stdout (आईडीई कंसोल) के लिए, आपको आईडीई वर्कस्पेस एन्कोडिंग सेट करना होगा। यह स्पष्ट नहीं है कि आप किस का उपयोग कर रहे हैं, लेकिन उदाहरण के लिए एक्लिप्स जो विंडो> वरीयताएँ> सामान्य> वर्कस्पेस> टेक्स्ट फ़ाइल एन्कोडिंग को यूटीएफ -8 में करने के लिए किया जाता है।

यहां छवि विवरण दर्ज करें

ध्यान दें कि HTML <meta http-equiv> टैग को तब अनदेखा कर दिया जाता है जब पृष्ठ HTTP पर सेवा की जाती है यह केवल तभी माना जाता है जब फ़ाइल स्थानीय डिस्क फ़ाइल सिस्टम से file:// माध्यम से खोला जाता है। साथ ही <form accept-charset> निर्दिष्ट <form accept-charset> अनावश्यक है क्योंकि यह पहले से ही एचटीएमएल पेज को प्रपत्र के साथ इस्तेमाल किये जाने के दौरान प्रतिक्रिया एन्कोडिंग के लिए डिफ़ॉल्ट है। W3 एचटीएमएल विनिर्देश भी देखें।

यह भी देखें:

  • यूनिकोड – पात्रों को सही कैसे प्राप्त करें?
  • पोस्टस को वर्णसेट का सम्मान क्यों नहीं किया जाता, लेकिन एक AJAX अनुरोध करता है? टॉमकेट 6
  • एचटीएमएल: फॉर्म यूटीएफ -8 प्रारूप इनपुट नहीं भेजता है
  • सर्वलेट एप्लिकेशन में यूनिकोड वर्ण प्रश्न चिह्न के रूप में दिखाए जाते हैं
  • डेटाबेस को लिखते समय खराब यूटीएफ -8 एन्कोडिंग (पढ़ना ठीक है)

टॉमकेट अकसर इस विषय को बहुत अच्छी तरह से कवर करता है विशेष रूप से: http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8 और http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q4

अकसर किये गए सवाल में दिए गए परीक्षा जेएसपी अनिवार्य रूप से एक है जो टॉमकेट साल पहले विभिन्न एन्कोडिंग मुद्दों को ठीक करने के दौरान उपयोग करते समय इस्तेमाल करता था।

बालासिस का उत्तर सही है, लेकिन मैं इसे जोड़ना चाहता हूं (निश्चित रूप से POST विधि के लिए) जो कि

 request.setCharacterEncoding("UTF-8"); 

आपको किसी भी पैरामीटर को पढ़ने से पहले कहा जाता है। इस प्रकार पैरामीटर को कैसे लागू किया जाता है:

 @Override public String getParameter(String name) { if (!parametersParsed) { parseParameters(); } return coyoteRequest.getParameters().getParameter(name); } 

जैसा कि आप देख सकते हैं कि एक झंडा मापदंड है, जो कि जब आप पहली बार किसी भी पैरामीटर को पढ़ते हैं, parseParameters () विधि को सभी अनुरोध के पैरामीटर के साथ पार्स और एन्कोडिंग सेट करते हैं। कॉलिंग:

 request.setCharacterEncoding("UTF-8"); 

पैरामीटर को पार्स किए जाने के बाद कोई प्रभाव नहीं होगा! यही कारण है कि कुछ लोग शिकायत कर रहे हैं कि अनुरोध की एन्कोडिंग सेट करना काम नहीं कर रहा है। यहां अधिकांश उत्तर सर्वलेट फिल्टर का उपयोग करने के लिए सुझाव देते हैं और वहां वर्ण एन्कोडिंग सेट करते हैं। यह सही है लेकिन यह भी ध्यान रखें कि कुछ सुरक्षा पुस्तकालय आपके फ़िल्टर (यह मेरा मामला था) से पहले अनुरोध मापदंडों को पढ़ सकता है, इसलिए यदि आपका फ़िल्टर निष्पादित होता है, तो अनुरोध मापदंडों के वर्ण एन्कोडिंग पहले ही सेट हो चुके हैं और यूटीएफ -8 या किसी अन्य कोई प्रभाव नहीं है

सिर्फ एक बिंदु जोड़ना चाहते हैं, अगर किसी और ने मुझे उसी गलती की, जहां मैंने पोस्ट विधि की अनदेखी की

इन सभी समाधानों को पढ़ें और मेरे कोड पर लागू किया गया लेकिन यह अभी भी काम नहीं करता क्योंकि मैं अपने <form> tag में method="POST" को जोड़ने में भूल गया