UTF-8 में, Упячка
वास्तव में \x423\x43F\x44F\x447\x43A\x430
के रूप में दर्शाया जाना चाहिए . \xD0\xA3\xD0\xBF\xD1\x8F...
तात्पर्य है कि उन्हें ISO-8859-1 का उपयोग करके गलत तरीके से एन्कोड किया गया है।
यहां एक परीक्षण स्निपेट है जो इसे साबित करता है:
String s = new String("Упячка".getBytes("UTF-8"), "ISO-8859-1"); // First decode with UTF-8, then (incorrectly) encode with ISO-8859-1.
for (char c : s.toCharArray()) {
System.out.printf("\\x%X", (int) c);
}
कौन सा प्रिंट करता है
\xD0\xA3\xD0\xBF\xD1\x8F\xD1\x87\xD0\xBA\xD0\xB0
तो आपकी समस्या को एक कदम पहले हल करने की जरूरत है। चूंकि आप जावा वेबप्लिकेशंस के बारे में बात कर रहे हैं और यह स्ट्रिंग संभवतः उपयोगकर्ता इनपुट से परिणाम है, क्या आप सुनिश्चित हैं कि आपने HTTP अनुरोध और प्रतिक्रिया एन्कोडिंग का ध्यान रखा है? सबसे पहले, JSP में, आपको JSP के शीर्ष पर निम्नलिखित को जोड़ना होगा:
<%@ page pageEncoding="UTF-8" %>
यह न केवल UTF-8 में पृष्ठ को प्रस्तुत करता है, बल्कि यह एक HTTP Content-Type
प्रतिक्रिया शीर्षलेख क्लाइंट को निर्देश देता है कि पृष्ठ यूटीएफ -8 का उपयोग करके प्रस्तुत किया गया है, ताकि ग्राहक को पता चले कि उसे किसी भी सामग्री को प्रदर्शित करना चाहिए और उसी एन्कोडिंग का उपयोग करके किसी भी फॉर्म को संसाधित करना चाहिए।
अब, HTTP अनुरोध भाग, GET अनुरोधों के लिए आपको प्रश्न में servletcontainer को कॉन्फ़िगर करने की आवश्यकता है। उदाहरण के लिए टॉमकैट में, यह URIEncoding
. को सेट करने का मामला है HTTP कनेक्टर
की विशेषता /conf/server.xml
. में इसलिए। POST अनुरोधों के लिए क्लाइंट (वेबब्रोसर) द्वारा जेएसपी में निर्दिष्ट प्रतिक्रिया एन्कोडिंग का उपयोग करने के लिए पर्याप्त स्मार्ट होने पर पहले से ही ध्यान रखा जाना चाहिए। यदि ऐसा नहीं होता है, तो आपको एक Filter
लाना होगा जो जांच और सेट
अनुरोध एन्कोडिंग।
अधिक पृष्ठभूमि जानकारी के लिए आपको यह लेख मिल सकता है उपयोगी।
इन सबके अलावा, MySQL में यूनिकोड वर्णों के साथ एक और समस्या है। यह केवल UTF-8 वर्णों का समर्थन करता है 3 बाइट्स तक ए> , 4 बाइट्स नहीं। दूसरे शब्दों में, केवल 65535 वर्णों की BMP श्रेणी समर्थित है, बाहर नहीं। उदाहरण के लिए PostgreSQL इसका पूरी तरह से समर्थन करता है। यह आपके वेब एप्लिकेशन को नुकसान नहीं पहुंचा सकता है, लेकिन यह निश्चित रूप से ध्यान में रखने वाली बात है।