2012-06-26 12 views
10

में HTTP हेडर परिणामों में UTF-8 मूल्यों भेजा जा रहा है मैं ग्राहक के लिए HTTPServletResponse का उपयोग करMojibake

मैं इस

response.setCharacterEncoding("UTF-8"); 
response.setHeader("Info", arabicWord); 

कोशिश कर रहा हूँ सर्वलेट से अरबी डेटा भेजने के लिए चाहते हैं और मैं इस

की तरह शब्द प्राप्त
String arabicWord = response.getHeader("Info"); 
ग्राहक (प्राप्त) में

भी इस

byte[]d = response.getHeader("Info").getBytes("UTF-8"); 
arabicWord = new String(d); 
की कोशिश की

लेकिन ऐसा लगता है कि कोई यूनिकोड नहीं है क्योंकि मुझे अजीब अंग्रेजी शब्द मिलते हैं, तो कृपया मैं अरबी utf8 शब्दों को कैसे भेज और प्राप्त कर सकता हूं?

उत्तर

27

HTTP शीर्षलेख यूटीएफ -8 का समर्थन नहीं करते हैं। वे आधिकारिक तौर पर आईएसओ -885 9 -1 का समर्थन करते हैं। भी RFC 2616section 2 देखें:

की * पाठ वर्ण हो सकते हैं चरित्र के अलावा अन्य सेट से शब्दों आईएसओ 8859-1 [22] केवल जब RFC 2047 [14] के नियमों के अनुसार इनकोडिंग।

आपकी सर्वश्रेष्ठ शर्त यूआरएल-एन्कोड और उन्हें डीकोड करना है।

response.setHeader("Info", URLEncoder.encode(arabicWord, "UTF-8")); 

और

String arabicWord = URLDecoder.decode(response.getHeader("Info"), "UTF-8"); 

यूआरएल एन्कोडिंग उन्हें %nn format जो पूरी तरह से वैध ISO-8859-1 है में बदलना होगा। ध्यान दें कि हेडर में भेजे गए डेटा में आकार सीमाएं हो सकती हैं। इसके बजाय सादे पाठ, जेएसओएन, सीएसवी या एक्सएमएल प्रारूप में प्रतिक्रिया शरीर में इसे भेजें। कस्टम HTTP हेडर का उपयोग इस तरह से एक डिजाइन गंध है।

+0

मैं इसे आज़माउंगा, – Totti

+0

फिर से आपको धन्यवाद, वास्तव में आपको धन्यवाद – Totti

+0

मुझे नियमित HTTP शीर्षलेखों और यूआरएल-एन्कोडिंग के माध्यम से PHP से जावास्क्रिप्ट से यूटीएफ -8 स्ट्रिंग पास करने की आवश्यकता है, धन्यवाद! –

2

मैं नहीं जानता कि जहां word चर से आ रहा है, लेकिन इस प्रयास करें:

arabicWord = new String(d, "UTF-8"); 

अद्यतन: समस्या की तरह लग रहा UTF-8 HTTP में इनकोडिंग डेटा के साथ है हेडर, देखें: HTTP headers encoding/decoding in Java के लिए विस्तृत चर्चा।

+0

मैंने इसे पहले से ही कोशिश की और काम नहीं किया, कृपया – Totti

+0

@Totti देखें: मेरा अपडेट देखें और http://stackoverflow.com/questions/324470 –

+0

पढ़ें, मैं आपको देखूंगा, धन्यवाद – Totti