C # ব্যবহার করে আমি কীভাবে কোনও ইউআরএল প্যারামিটারটি ডিকোড করব?


146

আমি কীভাবে সি # ব্যবহার করে এনকোডযুক্ত ইউআরএল প্যারামিটারটি ডিকোড করতে পারি?

উদাহরণস্বরূপ, এই ইউআরএল নিন:

my.aspx?val=%2Fxyz2F

উত্তর:



288
string decodedUrl = Uri.UnescapeDataString(url)

অথবা

string decodedUrl = HttpUtility.UrlDecode(url)

ইউআরএল একটি কল দিয়ে পুরোপুরি ডিকোড হয় না। পুরোপুরি ডিকোড করতে আপনি এই পদ্ধতিগুলির মধ্যে একটিকে একটি লুপে কল করতে পারেন:

private static string DecodeUrlString(string url) {
    string newUrl;
    while ((newUrl = Uri.UnescapeDataString(url)) != url)
        url = newUrl;
    return newUrl;
}

13
Uri.UnescapeDataString (url) thanx
themhz

@ যোগী তার জন্য ধন্যবাদ! আমি জানতাম না এটি কেবল একটি কল দিয়ে পুরোপুরি কাজ করে না! আমি Uri.UnescapeDataStringদুবার দৌড়েছি এবং যা চেয়েছিলাম তা পেয়েছি !! : D
C0NFUS3D

2
আইএমএইচও অভিযুক্ত উত্তরের চেয়ে ভাল কারণ আপনার প্রথম পরামর্শটি পোর্টেবল ক্লাস লাইব্রেরিতে (পিসিএল) কাজ করে
ড্যানিয়েল ভেইহেলম্যান

2
সর্বোত্তম উত্তর! তবে পুরোপুরি ডিকোড করার আগে আপনার প্যারামগুলি কীভাবে বাসা বেধে আছে তা বিবেচনা করুন। উদাহরণস্বরূপ, প্যারাম মানটি কোনও এনকোডযুক্ত ইউআরএল হতে পারে যা নিজেই অন্য এনকোডযুক্ত ইউআরএল এর সাথে পরম থাকে, আপনি যদি পুরোপুরি একসাথে ডিকোড করেন তবে আপনি কী বলতে পারবেন তা আর বলতে পারবেন না। এটি বীজগণিত বিবৃতি থেকে সমস্ত প্যারেনকে ইঙ্ক করার মতো হবে। a = ((b + c) * d) আপনি যদি এটি সম্পূর্ণরূপে ছাড়েন না, উপাদানগুলির অর্থ হারিয়ে যেতে পারে a = b + c * d
ড্যানো

2
ইউনেস্কেপডাটাস্ট্রিং পর্যাপ্ত নয় কারণ এটি বেশ কয়েকটি কেস পরিচালনা করে না (উদাহরণস্বরূপ কোনও ইউআরএলটিতে প্যারামিটারগুলিতে একটি স্পেস ব্যবহার করা থাকে তবে '+' তবে ইউনেস্কেপডেটা স্ট্রিং ইচ্ছাকৃতভাবে সেগুলিকে স্পেসে রূপান্তরিত করে না)। উরি কেবল ইউআরএল-র চেয়ে বেশি পরিচালনা করে, যেমন প্রশ্নটি ইউআরএল সম্পর্কে জিজ্ঞাসা করা হচ্ছে আমাদের এইচটিটিপি ইউটিলিটি ব্যবহার করা উচিত rআরলডেকোড
লরেঞ্জ


23

এটা চেষ্টা কর:

string decodedUrl = HttpUtility.UrlDecode("my.aspx?val=%2Fxyz2F");

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.