এএসপি.নেট কোর ইউআরএল এনকোড এবং ডিকোড


113
HttpContext.Current.Server.UrlEncode

এটি কেবল। নেট ফ্রেমওয়ার্কে কাজ করে। আমি কীভাবে এএসপি.নেট কোর প্রকল্পে ইউরি আর্গুমেন্টগুলি এনকোড বা ডিকোড করতে পারি?


2
এএসপি.এনইটি কোর - বা কোনও নন-ওয়েব প্রকল্পে কোনও এইচটিপিপি কনটেক্সট নেই। একই পদ্ধতিটি উরি ক্লাসের পদ্ধতিগুলির মাধ্যমে পাওয়া যায়, যেমন ইউরি.এস্কেপডাটাস্ট্রিং , ইউরি.একপেক্টউরিস্ট্রিং
পানাগিওটিস কানভোস

1
@PanagiotisKanavos ভুল আছে - নেই HttpContext.Currentকিন্তু HttpContextনেট কোর একটি অংশ - Microsoft.AspNetCore.Http.HttpContext। এটি মনে রাখবেন
জে ডো।

পুরো মন্তব্য পড়তে ভুলবেন না। আপনি উল্লিখিত এইচটিটিপি কনটেক্সটটি পূর্ববর্তী সংস্করণগুলির এইচটিটিপি কনটেক্সট থেকে খুব আলাদা। এটা অনেক বেশী সাধারণ উরি পদ্ধতি ব্যবহার করতে
Panagiotis Kanavos

উত্তর:


186
  • এএসপি.নেট কোর ২.০+ এর জন্য কেবল নাম স্থান যুক্ত করুন System.Net- WebUtilityক্লাসটি System.Runtime.Extensionsনুগেট প্যাকেজের অংশ হিসাবে পাঠানো হয় , এটি এএসপি.নেট কোর প্রকল্পে ডিফল্টরূপে উল্লেখ করা হয়।

  • পূর্ববর্তী সংস্করণে Microsoft.AspNetCore.WebUtilitiesনুগেট প্যাকেজ যুক্ত করুন।

তারপরে WebUtilityক্লাসটি আপনার জন্য উপলব্ধ থাকবে:

public static class WebUtility
{
    public static string UrlDecode(string encodedValue);
    public static string UrlEncode(string value);
}

6
আমার পক্ষে এসডিকে ২.০.০++ এর বিপরীতে কাজ করেনি, তবে ম্যানুয়েল আলভেস উত্তর (সিস্টেম.নেট.ওয়েবিলিটি) করেছে।
matt.chatterley

80

এটি নেট কোর এসডিকে-র 2.0.0 সংস্করণে উপলব্ধ রয়েছে System.Net.WebUtility.UrlEncode( ডকুমেন্টেশন দেখুন )


2
এটি সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত। ধন্যবাদ।
টড বার্ডসাল

11
নেট কোর 2+ এর জন্য, যখন আমি ব্যবহার করি System.Net.WebUtility.UrlEncode: স্পেসগুলি একটি দিয়ে এনকোড করা থাকে +। আমি Uri.EscapeDataStringদিয়ে এনকোড করতাম %20
ttugates

43

এএসপি.নেট কোর ২.০+ এর জন্য এবং আপনার যদি ফাঁকা স্থান প্রয়োজন হয় তবে এগুলি এনকোড করা হবে %20

বিরোধী হিসাবে +;

ব্যবহার করুন:

 Uri.EscapeDataString(someString);

2

আপনার সময় নষ্ট করবেন না, আমি এই তথাকথিত ইউআরএল এনকোডারদের সাথে প্রচুর অভিজ্ঞতা পেয়েছি, এগুলি সবই অকেজো এবং আলাদা আলাদা প্রশ্ন রয়েছে। উদাহরণস্বরূপ ওয়েব ইউটিলিটি.আরল এনকোড "+" চিহ্নটির যত্ন নেয় না।

আপনি যদি ইউআরএল প্যারামিটারগুলি এনকোড করতে চান তবে একটি BASE58 এনকোডিং নিয়োগ করুন। এটি কেবলমাত্র বর্ণমালা অক্ষর + সংখ্যা ব্যবহার করে, সুতরাং আপনাকে url এনকোড দেওয়ার দরকার নেই।


আপনি কি এই সমস্ত কীর্তি ব্যাখ্যা করতে পারেন, আমি কেবল + এর সাথেই পরিচিত familiar যা কোয়েরিহেল্পার্স d অ্যাডকুইয়ারিস্ট্রিং বা উরি E
মাইকেল

আমি সবেমাত্র চেষ্টা করেছি WebUtility.UrlEncodeএবং এটি আশ্চর্যরূপে একটি প্লাস চিহ্ন ("+") কে "% 2B" তে রূপান্তর করেছে। আমি নেট কোর 3.1 ব্যবহার করছি।
দেজন

0

আমি একটি পুনঃনির্দেশ ব্যবহার করছি এবং urlEncode আমার পক্ষে কাজ করে নি কারণ এটি পুরো url এনকোড করে। নীচে দেখানো হয়েছে এর পরিবর্তে আমি ইউরিহেল্পার ব্যবহার করে এটি সমাধান করেছি E

UriHelper.Encode

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.