2010-08-12 12 views
6

मुझे यूनिकोड-यूआरएल के साथ सर्वलेट में पुनर्निर्देशन भेजने में समस्याएं आ रही हैं।यूनिकोड-डोमेन पर सर्वलेट रीडायरेक्टिंग

अर्थात तुर्की

http://türkçeisimtescil.com

यह काम करता है अगर आप इसे अपने ब्राउज़र के एड्रेस बार में पेस्ट में निम्नलिखित यूआरएल पर विचार करें। हालांकि यह आपके अनुरोध पर आपके ब्राउज़र द्वारा

http://xn--trkeisimtescil-ijb74a.com

लिए अनुवाद किया है।

मान लें कि मेरे पास यूटीएफ 8-विशिष्ट वर्णों वाला पहला यूआरएल है और मैं इसे डीबी से सफलतापूर्वक प्राप्त करता हूं। मैं अपने सर्वलेट को उस यूआरएल पर रीडायरेक्ट करना चाहता हूं।

हालांकि यह मेरे www.t%1frk%e7eisimtescil.com

पर रीडायरेक्ट जब मैं सिर्फ response.sendRedirect(url); (हेडर के अनुसार) कर मैं भी response.sendRedirect("http://www.t\u011Frk\u00E7eisimtescil.com"); (इनलाइन एन्कोडिंग) की कोशिश की और प्रतिक्रिया बिल्कुल वैसा ही है।

शायद अगर मैं हेडर पर türkçeisimtescil.com प्राप्त करता हूं, तो ब्राउज़र इसे xn--.. प्रारूप में परिवर्तित कर देगा और यह सफल होगा।

मुझे पता नहीं लगा कि एन्कोडिंग टूटा हुआ है। किसी भी मदद की सराहना की जाती है।

उत्तर

7

एक Internationalized Domain Name (IDN) है यही कारण है कि। ASCII and Unicode के बीच इसका रूपांतरण RFC 3490 में निर्दिष्ट है। जावा में, आप एक और दूसरे के बीच कनवर्ट करने के लिए java.net.IDN का उपयोग कर सकते हैं। यूआरएल से मेजबान भाग प्राप्त करने के लिए आप का उपयोग कर सकते हैं।

String host = new URL("http://türkçeisimtescil.com").getHost(); 
String idn = IDN.toASCII(host); 
String newURL = "http://" + idn; 
+0

पहले से ही वैसे भी धन्यवाद पता चला। –

0

हल हो गया।

java.net.IDN की आईडीएन कक्षा "पॉनीकोड" (xn-- ..) URL प्राप्त करके इसे हल करती है। एक पंक्ति में

java.net.IDN.toASCII(url) 

3 स्वयं का जवाब FTW :)

+0

आप जल्दी हो! ध्यान दें कि आप केवल डोमेन (होस्ट) भाग को कन्वर्ट करना चाहते हैं। मेरा जवाब देखें – BalusC

+0

वास्तव में मुझे कनवर्ट करने के लिए पूरे यूआरएल (प्राधिकरण, पोर्ट, क्वेरीस्ट्रिंग, डोमेन) की आवश्यकता है। बेशक आईडीएन पोनीकोड ​​सिर्फ डोमेन पर लागू होना चाहिए। मैं एक सुविधाजनक समाधान की तलाश में हूं क्योंकि यह xn - http: // जैसा कुछ करता है .. जो अप्रत्याशित है (मेरे द्वारा)। कोई विचार? –

+0

दिलचस्प बात यह है कि यह http: // a.türkçe' या 'http: // w.türkçe' के लिए 'http: // xn -' उत्पन्न करता है लेकिन 'xn - http: //' http: // türkçeblabla ... 'मेरे बालों को खींच रहा है। –

संबंधित मुद्दे