ইউআরএল এনকোড "&" (অ্যাম্পারস্যান্ড) কে "& 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.