ইউআরএল এম্পারস্যান্ড ত্যাগ করা


203

আমি একটি জিইটি বার্তা প্রেরণের চেষ্টা করছি যাতে এম্পারস্যান্ডগুলির সাথে স্ট্রিং রয়েছে এবং ইউআরএলটিতে কীভাবে এম্পারস্যান্ডটি থেকে বাঁচতে হবে তা অনুমান করতে পারি না।

উদাহরণ:

http://www.example.com?candy_name=M&M
result => candy_name = M

আমি চেষ্টাও করেছি:

http://www.example.com?candy_name=M\&M
result => candy_name = M\\

আমি ইউআরএলগুলি ম্যানুয়ালি ব্যবহার করছি, সুতরাং আমার কেবল সঠিক অক্ষর প্রয়োজন।

আমি কোনও লাইব্রেরি ব্যবহার করতে পারি না। এটা কিভাবে করা যাবে?

উত্তর:


350

তাদের শতাংশ-এনকোড হওয়া দরকার:

> encodeURIComponent('&')
"%26"

সুতরাং আপনার ক্ষেত্রে, URL টি দেখতে এমন হবে:

http://www.mysite.com?candy_name=M%26M

2
: -% 26 আমার পক্ষে কাজ করছে না। অন্য কোন সমাধান আছে কি?
সানজিভ

2
আমি যখন & 26% এ প্রতিস্থাপন করি তখন এটি একই ত্রুটিটি দেখায়--A potentially dangerous Request.Path value was detected from the client (&).
সানজিভ

4
@ সানজিভ: এটি আপনার কোড নিয়ে সমস্যা, শতাংশ এনকোডিং নয়। প্রশ্ন জিজ্ঞাসা কর.
ব্লেন্ডার

2
@ সানজিভ নিশ্চিত করুন যে আপনি "& 26" এর সাথে প্রথমে "% 26" প্রতিস্থাপন করেছেন। কোড দেখুন ::: এনএসএসআরটিং * বার্তা = @ "হ্যালো জ্যাক এবং জিল"; ম্যাসেজ = [বার্তা স্ট্রিংবাইরপ্লেসিংঅ্যাকসিরােন্সস অফ স্ট্রিং: @ "&" স্ট্রিং: @ "% 26"]; বার্তা = [বার্তা স্ট্রিংবাই অ্যাপেন্ডিংস্ট্রিং: @ ""]; ম্যাসেজ = [বার্তা স্ট্রিংবাইএডিংপ্রেসেন্টসস্ক্যাপগুলি ইউজিং এনকোডিং: এনএসইউটিএফ 8 স্ট্রিংইনকোডিং];
নীরভ

40

এটি কেবল প্রযোজ্য নয় ইউআরএলগুলিতে অ্যাম্পারস্যান্ডের , তবে সমস্ত সংরক্ষিত অক্ষরগুলিতেও হয় । যার মধ্যে কিছু রয়েছে:

 # $ & + ,  / : ; = ? @ [ ]

&এইচডিএমএল ডকুমেন্টে এনকোডিংয়ের মতো ধারণাটি একই , তবে প্রসঙ্গটি HTML ডকুমেন্টের মধ্যে থাকা ছাড়াও ইউআরআই-র মধ্যেই পরিবর্তিত হয়েছে। সুতরাং, শতাংশ-এনকোডিং উভয় প্রসঙ্গে অভ্যন্তরের পার্সিংয়ের সাথে সমস্যাগুলি প্রতিরোধ করে।

আপনি যখন অন্য কোনও ইউআরএল-এর ভিতরে একটি ইউআরএল রাখার প্রয়োজন হয় তখন এটি যেখানে খুব কার্যকর হয় সেই জায়গাটি। উদাহরণস্বরূপ, আপনি যদি টুইটারে কোনও স্থিতি পোস্ট করতে চান:

http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)

আমার টুইটগুলিতে প্রচুর সংরক্ষিত অক্ষর রয়েছে, যথা ?'():/, তাই আমি statusURL প্যারামিটারের পুরো মানটি এনকোড করেছি ed mailto:বার্তাগুলি বা বিষয় থাকতে পারে এমন লিঙ্কগুলি ব্যবহার করার সময় এটিও সহায়ক is কারণ লাইন ব্রেক, অ্যাম্পারস্যান্ড ইত্যাদি অক্ষত রাখতে আপনাকে bodyএবং subjectপরামিতিগুলি এনকোড করা দরকার ।

যখন কোনও নির্দিষ্ট প্রসঙ্গে সংরক্ষিত সেট ("" সংরক্ষিত চরিত্র ") এর একটি অক্ষরটির বিশেষ অর্থ (একটি" সংরক্ষিত উদ্দেশ্য ") থাকে এবং একটি ইউআরআই স্কিম বলে যে সেই চরিত্রটি অন্য কোনও উদ্দেশ্যে ব্যবহার করা প্রয়োজন, তবে চরিত্রটি অবশ্যই শতাংশ-এনকোড হওয়া উচিত। সংরক্ষিত অক্ষরটিকে শতাংশ-এনকোডিংয়ের সাথে অক্ষরটিকে এএসসিআইআইতে সম্পর্কিত বাইট মান হিসাবে রূপান্তর করা এবং তারপরে হেক্সাডেসিমাল ডিজিটের জোড় হিসাবে সেই মানটি উপস্থাপন করা হয়। শতাংশ চিহ্ন ("%") এর পূর্বে অঙ্কগুলি, যা পালানোর চরিত্র হিসাবে ব্যবহৃত হয়, তারপরে সংরক্ষিত অক্ষরের জায়গায় ইউআরআইতে ব্যবহৃত হয়। (একটি অ-এসসিআইআই চরিত্রের জন্য, এটি সাধারণত ইউটিএফ -8 এ তার বাইট ক্রমে রূপান্তরিত হয় এবং তারপরে প্রতিটি বাইট মানটি উপরে হিসাবে উপস্থাপন করা হয়)) সংরক্ষিত অক্ষর "/" উদাহরণস্বরূপ, যদি "পথ" ব্যবহার করা হয় কোনও ইউআরআই এর উপাদানটির, পাথ বিভাগগুলির মধ্যে একটি সীমানার হওয়ার বিশেষ অর্থ রয়েছে। যদি প্রদত্ত ইউআরআই স্কিম অনুসারে, "/" কোনও পাথ বিভাগে থাকা দরকার, তবে "% 2F" বা "% 2f" তিনটি অক্ষর অবশ্যই কাঁচা "/" এর পরিবর্তে সেগমেন্টে ব্যবহার করা উচিত।

http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters


4
উপরের তালিকার মধ্যে, ! ' ( ) *ইউআরএল ব্যবহার করে এনকোড করা হয় না encodeURIComponent
আমিল ওয়াদুওয়ারা

এখানে একটি পিএইচপি ফাংশন ইউলিনকোড রয়েছে যা এই সমস্যাটি সমাধান করে: ব্যবহার $ Escapefilename = urlencode ($ ফাইলের নাম);
জেরেমি ইয়ং


3

ইউআরএলগুলিতে অনুমোদিত নয় এমন অক্ষরগুলি 'পালাতে' আপনি% অক্ষর ব্যবহার করতে পারেন। [আরএফসি 1738] দেখুন।

Http://www.asciable.com/ এ ASCII মানগুলির একটি সারণী ।

&হেক্সাডেসিমালে আপনি 26 টি দেখতে পাচ্ছেন - সুতরাং আপনার এম% 26 এম প্রয়োজন।




1

আমি ব্লেন্ডার সমাধান সম্পর্কে একটি ছোট্ট মন্তব্য যোগ করতে চাই।

আপনি নিম্নলিখিতটি করতে পারেন:

var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M');

ফলাফল:

http://example.com?candy_name=M%26M

এটি সম্পর্কে দুর্দান্ত জিনিসটি কেবল & কেবল কোনও বিশেষ চরিত্রের জন্যই কাজ করে না।

এই ক্ষেত্রে:

var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M?><')

আউটপুট:

"http://example.com?candy_name=M%26M%3F%3E%3C"

0

আপনি বরং এই এনকোডিউআরআইআরকিউম্পোন্ট ফাংশনটি ব্যবহার করে আপনার যুক্তিগুলি পাস করতে পারেন যাতে কোনও বিশেষ অক্ষর পাস করার বিষয়ে আপনাকে চিন্তা করতে হবে না।

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos&param2="+encodeURIComponent(someValue)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

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