.NET

2011-02-03 6 views
5

में मल्टीबाइट वर्णों के साथ एक यूआरएल एन्कोडेड स्ट्रिंग की लंबाई सीमित करना मैं .NET का उपयोग कर रहा हूं, और मुझे एक स्ट्रिंग को छोटा करने की आवश्यकता है जिसमें मल्टीबाइट वर्ण हो सकते हैं ताकि यह URL एन्कोड होने के बाद सेट की लंबाई से अधिक न हो । ऐसा कुछ ऐसा लगता है जो बनाया जाएगा, लेकिन मुझे यह नहीं मिल रहा है।.NET

मैं यूआरएल एन्कोड किए जाने के बाद बस एक सबस्ट्रिंग करूँगा, लेकिन यह एक एन्कोडेड वर्ण का हिस्सा ले सकता है (अंतरिक्ष% 20 हो जाता है, और यदि अंत में यह% 2 तक छोटा हो सकता है, जो अमान्य है), या एक मल्टीबाइट चरित्र का वह हिस्सा छोटा कर दिया जाएगा (π को% CF% 80 के रूप में एन्कोड किया जाता है, और इसे%,% CF,% CF% 8 के रूप में छोटा कर दिया जा सकता है, जिनमें से सभी गलत हैं)।

+0

क्या आप पूछ रहे हैं कि किसी दिए गए लम्बाई पर एक स्ट्रिंग को कैसे छीनना है, या आप पूछ रहे हैं कि इसे स्वचालित रूप से कैसे करें? पहला सवाल जवाब है लंबे स्ट्रिंग। सबस्ट्रिंग (0, अधिकतम लम्बाई)। – Kendrick

+0

@ केंड्रिक: मुझे लगता है कि सवाल यह है कि आप वास्तव में नहीं जानते हैं कि जब तक आप वास्तव में urlencode नहीं करते हैं, तब तक आप वास्तव में urlencoded रूप में कितनी देर तक चल रहे हैं, क्योंकि मूल (उर्फ मल्टीबाइट वर्ण) में कुछ पात्रों की आवश्यकता होगी urlencoded संस्करण में एक बाइट। – MusiGenesis

+0

@MusiGenesis: यह सही है। मैंने अपना प्रश्न अधिक विशिष्ट होने के लिए अपडेट किया है। – thefroatgt

उत्तर

1

मेरी त्वरित Google खोज ने इसके लिए कुछ भी नहीं किया है, जो थोड़ा आश्चर्यजनक है क्योंकि यह अपेक्षाकृत सामान्य समस्या की तरह लगता है (कम से कम उन लोगों के लिए जो राक्षसी लंबे यूआरएल से नहीं बचते हैं)।

आप इसे क्रियात्मक रूप से कर सकते हैं जहां आप स्ट्रिंग को एन्कोड करते हैं, और यदि एन्कोडेड स्ट्रिंग बहुत लंबी है तो आप मूल और पुनः-एन्कोड से एक वर्ण को काटते हैं, और एन्कोडेड स्ट्रिंग पर्याप्त होने तक इसे तब तक जारी रखें। यह स्पष्ट रूप से बहुत प्रदर्शन नहीं होगा।

+0

के साथ समाप्त होता है लेकिन आप बाइनरी खोज की तरह कुछ कर सकते हैं। कॉल करें 'एन्कोडिंग। गेटबाइटकाउंट() '। यदि यह बहुत लंबा है, स्ट्रिंग लंबाई से आधा अंतर घटाएं और पुनः प्रयास करें। यदि यह फिट बैठता है, तो आधा अंतर जोड़ें, इत्यादि। हालांकि यह चरित्र-दर-चरित्र संभवतः "पर्याप्त तेज़" है, यह मानते हुए कि यह शायद अक्सर नहीं किया जाएगा। –

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