दिलचस्प पोस्ट
कन्स्ट्रक्टर के बिना ऑब्जेक्ट इन्सेंट बनाएं? mongodb अद्यतन में एक चर का उपयोग कर जब उपयोगकर्ता एक सूची आइटम पर घुसता है तो मैं कर्सर कैसे हाथ बना सकता हूं? जावा: बुलियन प्रिंट्लएन (बूलियन? "प्रिंट सच है": "प्रिंट झूठा") अनुवादित 3 डी के माध्यम से वेबकिट-आधारित धुँधली / विकृत पाठ पोस्ट एनीमेशन HttpClient को एचटीटीपी हेडर्स जोड़ना क्या मैं एचटीएमएल 5 में <select> फ़ील्ड में आवश्यक विशेषता को लागू कर सकता हूं? जीसीसी डिफ़ॉल्ट क्या निर्देशिका शामिल हैं? कच्चे प्रकार और जेनेरिक तरीके का संयोजन QMake .pro फ़ाइल में अलग डीबग / रिलीज़ आउटपुट निर्देशिका कैसे निर्दिष्ट करें UITableView के नीचे अतिरिक्त सेपरेटर को हटा दें सी ++ में रन टाइम पर स्मृति का उपयोग कैसे करें? PHP के साथ HTTP कैश हेडर का उपयोग कैसे करें PostgreSQL में सभी तालिकाओं को छोड़ दें? जावास्क्रिप्ट का उपयोग करते हुए ब्राउज़र में वापस बटन को अक्षम कैसे करें

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

बहुत सारी परीक्षण और त्रुटि के बाद मैं अभी भी समस्या का पता नहीं लगा सकता। जेएसपी, सर्वलेट, और डेटाबेस यूटीएफ -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" को जोड़ने में भूल गया