2011-09-07 10 views
5

यूनिकोड वाले यूआरएल को एन्कोड कैसे करें? मैं इसे कमांड लाइन उपयोगिता में पास करना चाहता हूं और मुझे इसे पहले एन्कोड करने की आवश्यकता है।यूआरएल यूनिकोड वर्ण एन्कोडिंग

उदाहरण: http://zh.wikipedia.org/wiki/白雜訊

http://zh.wikipedia.org/wiki/%E7%99%BD%E9%9B%9C%E8%A8%8A हो जाता है।

+0

ऐसा लगता है कि स्टैक ओवरफ्लो टेक्स्ट एडिटर यूनिकोड यूआरएल एन्कोड किया गया है। मैं सी # में ऐसा करना चाहता हूं। वास्तविक यूनिकोड यूआरएल प्राप्त करने के लिए लिंक पर क्लिक करें। – Tomas

+2

स्टैक ओवरफ़्लो ने ऐसा नहीं किया - आपके ब्राउज़र ने किया! यह यूआरएल को यूनिकोड के रूप में प्रदर्शित करता है लेकिन जब आप इसे कॉपी करते हैं, तो कॉपी किए गए टेक्स्ट में यूआरएल-एन्कोडेड स्ट्रिंग होती है। –

+0

@ कोनराड रुडॉल्फ मेरा ब्राउज़र, हालांकि, नहीं किया। मैं इसे चीनी वर्णों के रूप में मानता हूं। :) –

उत्तर

7

आप System.Web विधानसभा में HttpUtility.UrlPathEncode विधि (पूर्ण .NET फ्रेमवर्क 4 प्रोफ़ाइल की आवश्यकता है) का उपयोग कर सकते हैं:

var encoded = HttpUtility.UrlPathEncode("http://zh.wikipedia.org/wiki/白雜訊"); 
+0

यूनिकोड वर्ण कैसे प्राप्त करें? यूआरएल उपयोगकर्ताओं द्वारा पारित किया जाएगा और मुझे नहीं पता कि यूआरएल में यूनिकोड वर्ण कहां दिखाई देते हैं। – Tomas

+0

@ टॉमस: आपकी टिप्पणी के जवाब में अद्यतन उत्तर। –

+1

ध्यान दें कि होस्ट नाम के अलावा पथ और अन्य यूआरएल के अन्य हिस्सों में वर्णों के लिए UrlPathEncode सही काम है। यदि आपके पास आईआरआई के होस्टनाम में यूनिकोड वर्ण हैं, तो इसके यूआरआई बनाने के लिए आपको आईडीएन एल्गोरिदम (Punycode) का उपयोग करके उन्हें एन्कोड करना होगा। – bobince

0
Server.UrlEncode(s); 

नेट तार देशी रूप यूनिकोड तार (UTF-8 एन्कोडेड, विशिष्ट होना) कर रहे हैं तो आप कुछ भी नहीं करने के लिए एक से अधिक HttpServerUtility.UrlEncode आह्वान (हालांकि तथाकथित "आंतरिक" सर्वर संपत्ति में उपलब्ध हो जाएगा की जरूरत है एएसपीनेट में सबसे अधिक संदर्भ जहां आप ऐसा करना चाहते हैं)।

+0

मैं एन्कोड नहीं करना चाहता: // अक्षर, केवल यूनिकोड वर्ण। – Tomas

+0

आप व्यक्तिगत पैरामीटर मान एन्कोड करते हैं, पूरे यूआरएल नहीं। – Matthew

+0

यदि मैं सर्वर पर यूनिकोड यूआरएल पास करता हूं। यूआरएलएनकोड (एस) यह सभी यूरिकोड अक्षरों को विशेष यूआरएल अक्षरों के साथ एन्कोड करेगा जैसे:,? और // मैं ऐसा नहीं करना चाहता। – Tomas

4

MSDN के लिए आप UrlPathEncode अब और उपयोग नहीं कर सकते अनुसार।

तो, अब है यह कर का सही तरीका,

var urlString = Uri.EscapeUriString("http://zh.wikipedia.org/wiki/白雜訊"); 
0

मैं तुर्की चरित्र समस्या थी। <a href="/@Html.Raw(string)" समस्या हल हो गई