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


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.