ইউআরএল এনকোড "&" (অ্যাম্পারস্যান্ড) কে "& amp;" হিসাবে দেখছে এইচটিএমএল সত্তা


293

আমি একটি স্ট্রিং এনকোড করছি যা কোনও ইউআরএল (জিইটি এর মাধ্যমে) পাস হবে। তবে আমি যদি ব্যবহার করি escape, encodeURIবা encodeURIComponent, এর &সাথে প্রতিস্থাপন করা হবে %26amp%3Bতবে আমি চাই এটির সাথে প্রতিস্থাপন করা হোক %26। আমি কি ভুল করছি?


স্ট্রিং কোথা থেকে আসে? আপনি এতক্ষণের কোডটি পোস্ট করতে পারেন?
— অ্যান্ডি ই

1
&এইচটিএমএল প্রসঙ্গে এম্পারস্যান্ড থেকে বাঁচার উপযুক্ত উপায় ... আপনার উত্সটি কোথা থেকে আসছে? এবং গন্তব্য কি? উদাহরণস্বরূপ এই সার্ভার-সাইডটি করা ভাল।
— নিক Craver

আমি এইচটিএমএল বডি থেকে কিছু আঁকছি (এবং এটি এইচটিএমএল এনকোডযুক্ত (সুতরাং এটি এখানে রয়েছে & আমি এখন বুঝতে পারি)) এবং আমি এটি একটি ইউআরএলে পাস করতে হবে ... সুতরাং, আমাকে এইচটিএমএলটি ডিকোড করতে হবে (তবে কীভাবে?) en তারপর স্ট্রিংটি এনকোড করুন (এনকোডিউরিক কম্পোনেন্ট সহ) ...
— ডডোডেডডনল

2
এটি পেয়েছি ... আমি jquery .html () ব্যবহার করেছি, পাঠ্য নয় () ... বোকা (ক)
— dododedodonl

1
jQuery এর .html () অভ্যন্তরীণ এইচটিএমএল সম্পত্তিটিতে মানচিত্র , সুতরাং আমি আমার উত্তরে বলেছি :-)
— অ্যান্ডি ই

উত্তর:


437

আপনার কোডটি না দেখে, অন্ধকারে ছুরিকাঘাতের চেয়ে উত্তর দেওয়া শক্ত। আমি অনুমান করব যে আপনি এনকোডেরিউআইআরকিউম্পোন্ট () ব্যবহার করছেন , যা সঠিকভাবে ব্যবহার করার পদ্ধতিটি অভ্যন্তরীণ এইচটিএমএল সম্পত্তিটি অ্যাক্সেস করার ফলে এসেছে । সমাধানটি হ'ল তার পরিবর্তে অভ্যন্তরীণ পাঠ্য / পাঠ্য বিষয়বস্তুর বৈশিষ্ট্য পেতে হবে:

var str, 
    el = document.getElementById("myUrl");

if ("textContent" in el)
    str = encodeURIComponent(el.textContent);
else
    str = encodeURIComponent(el.innerText);

যদি এটি না হয় তবে আপনি এইচটিএমএল সত্তাকে প্রতিস্থাপন করতে প্রতিস্থাপন () পদ্ধতিটি ব্যবহার করতে পারেন :

encodeURIComponent(str.replace(/&/g, "&"));

94

আপনি যদি আক্ষরিকভাবে এটি করেন:

encodeURIComponent('&')

তারপর ফল %26, আপনি এটি এখানে পরীক্ষা করতে পারেন । আপনি এনকোড করছেন যে স্ট্রিংটি শুরু এবং ঠিক & নয় &তা নিশ্চিত করুন ... অন্যথায় এটি সঠিকভাবে এনকোডিং করছে, সম্ভবত এটি ঘটবে। যদি কোনও কারণে আপনাকে আলাদা ফলাফলের প্রয়োজন হয় তবে আপনি .replace(/&/g,'&')এনকোডিংয়ের আগে একটি করতে পারেন ।


3
... সম্ভবত এটাই তার সমস্যা।
— পেক্কা

2

এইচটিএমএল এবং ইউআরআই এনকোডিং রয়েছে। &হয় & HTML এ এনকোড যখন %26হয় &মধ্যে কোনো URI এনকোডিং ।

সুতরাং আপনার স্ট্রিংটি ইউআরআই এনকোড করার আগে আপনি HTML ডিকোড করতে চান এবং তারপরে ইউআরআই এটিকে এনকোড করতে পারেন :)

var div = document.createElement('div');
div.innerHTML = '&AndOtherHTMLEncodedStuff';
var htmlDecoded = div.firstChild.nodeValue;
var urlEncoded = encodeURIComponent(htmlDecoded);

ফলাফল %26AndOtherHTMLEncodedStuff

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে

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