दिलचस्प पोस्ट
ओरेकल के साथ काम करते समय बैच के लाईन को फ्लिएंट एनआईबीनेट के साथ कैसे कार्यान्वित करें? एसक्यूएल: एक विशिष्ट स्तंभ के भीतर एक उपस्ट्रिंग का उपयोग करके आदेश … संभव है? एचटीएमएल के लिए पाठ से बचें बीएफएस द्वारा प्राप्त वास्तविक पथ को मैं कैसे प्राप्त करूं? मैं कमांड लाइन से साइगविन घटक कैसे स्थापित करूं? एक सरणी के पीछे तेजी से आगे बढ़ने के बाद क्यों आगे बढ़ते हैं IntentService और एक सेवा के बीच अंतर क्या है? रचनात्मक हस्ताक्षर के साथ टाइपस्क्रिप्ट इंटरफेस कैसे काम करता है? मैं दशमलव मान को 2 दशमलव स्थानों (एक पृष्ठ पर आउटपुट के लिए) कैसे गोल करता हूं jQuery $ (दस्तावेज़) .ready () दो बार आग लगती है पायथन में बैश 'स्रोत' का अनुकरण करना Php सत्रों को उपडोमेन पर ले जाने की अनुमति दें AngularJS: AngularJS ने एक टेम्पलेट गाया है के बाद अतिरिक्त कोड को चलाने के लिए कैसे? पूर्ण स्क्रीन उत्तरदायी पृष्ठभूमि छवि क्या संख्याओं को मान्य करने के लिए जावास्क्रिप्ट में isNumeric जैसे कोई फ़ंक्शन है?

स्ट्रिंग को डीकोड करने का सही तरीका क्या है जिसमें इसमें विशेष HTML संस्थाएं हैं?

कहते हैं कि मुझे कुछ जेएसओन वापस एक सेवा अनुरोध से मिलता है जो इस तरह दिखता है:

{ "message": "We're unable to complete your request at this time." } 

मुझे यकीन नहीं है कि वह apostrophe क्यों ऐसा है ( ' ); मुझे पता है कि मैं इसे डीकोड करना चाहता हूं।

यहां एक तरीका है जो jQuery का उपयोग कर रहा है जो मेरे सिर में आ गया है:

 function decodeHtml(html) { return $('<div>').html(html).text(); } 

ऐसा लगता है (बहुत) हैकी, यद्यपि। एक बेहतर तरीका क्या है? क्या "सही" रास्ता है?

Solutions Collecting From Web of "स्ट्रिंग को डीकोड करने का सही तरीका क्या है जिसमें इसमें विशेष HTML संस्थाएं हैं?"

यह एचटीएमएल अक्षर डिकोड करने का मेरा पसंदीदा तरीका है इस कोड का उपयोग करने का लाभ यही है कि टैग भी संरक्षित हैं।

 function decodeHtml(html) { var txt = document.createElement("textarea"); txt.innerHTML = html; return txt.value; } 

उदाहरण: http://jsfiddle.net/k65s3/

इनपुट:

 Entity:&nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br> 

आउटपुट:

 Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br> 

ऐसा करने के लिए DOM का उपयोग न करें। HTML संस्थाओं को डिकोड करने के लिए DOM का उपयोग (वर्तमान में स्वीकृत उत्तर में सुझाए गए अनुसार) क्रॉस-ब्राउज़र परिणामों में अंतर हो जाता है

एचटीएमएल स्टैंडर्ड में एल्गोरिथ्म के अनुसार चरित्र के संदर्भ को डीकोड करने वाले एक मजबूत और नियतात्मक समाधान के लिए , वह पुस्तकालय का उपयोग करता है । इसके README से:

वह ("एचटीएमएल संस्थाओं" के लिए) जावास्क्रिप्ट में लिखा गया एक मजबूत एचटीएमएल एंटीक एन्कोडर / डिकोडर है। यह एचटीएमएल के अनुसार सभी मानकीकृत नामित वर्ण संदर्भों का समर्थन करता है, अस्पष्ट एम्परसेंड्स और दूसरे किनारे मामलों को संभालता है , जैसे कि ब्राउज़र की तरह , एक व्यापक परीक्षण सूट है, और – कई अन्य जावास्क्रिप्ट समाधानों के विपरीत – वह सिर्फ ऊपरी यूनिकोड प्रतीकों को व्यवस्थित करता है। एक ऑनलाइन डेमो उपलब्ध है

यहां बताया गया है कि आप इसका उपयोग कैसे करेंगे:

 he.decode("We&#39;re unable to complete your request at this time."); → "We're unable to complete your request at this time." 

अस्वीकरण: मैं वह पुस्तकालय के लेखक हूँ

कुछ और जानकारी के लिए यह स्टैक अतिप्रवाह उत्तर देखें

यदि आप html / dom का उपयोग नहीं करना चाहते हैं, तो आप regex का उपयोग कर सकते हैं। मैंने यह परीक्षण नहीं किया है; लेकिन कुछ की तर्ज पर:

 function parseHtmlEntities(str) { return str.replace(/&#([0-9]{1,3});/gi, function(match, numStr) { var num = parseInt(numStr, 10); // read num as normal number return String.fromCharCode(num); }); } 

[संपादित करें]

ध्यान दें: यह केवल संख्यात्मक HTML- संस्थाओं के लिए काम करेगा, और न ही सामान की तरह।

[संपादित करें 2]

फिक्स्ड फंक्शन (कुछ टाइपोस), यहां टेस्ट करें: http://jsfiddle.net/Be2Bd/1/

jQuery आपके लिए एनकोड और डीकोड करेगा।

 function htmlDecode(value) { return $("<textarea/>").html(value).text(); } function htmlEncode(value) { return $('<textarea/>').text(value).html(); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> $(document).ready(function() { $("#encoded") .text(htmlEncode("<img src onerror='alert(0)'>")); $("#decoded") .text(htmlDecode("&lt;img src onerror='alert(0)'&gt;")); }); </script> <div id="encoded"></div> <div id="decoded"></div> 

& Xxxx स्टाइल वाली संस्थाओं से निपटने के लिए जेएस फ़ंक्शन है:
GitHub पर फ़ंक्शन

 // encode(decode) html text into html entity var decodeHtmlEntity = function(str) { return str.replace(/&#(\d+);/g, function(match, dec) { return String.fromCharCode(dec); }); }; var encodeHtmlEntity = function(str) { var buf = []; for (var i=str.length-1;i>=0;i--) { buf.unshift(['&#', str[i].charCodeAt(), ';'].join('')); } return buf.join(''); }; var entity = '&#39640;&#32423;&#31243;&#24207;&#35774;&#35745;'; var str = '高级程序设计'; console.log(decodeHtmlEntity(entity) === str); console.log(encodeHtmlEntity(str) === entity); // output: // true // true 

_.unescape जो आप _.unescape रहे हैं वह है

http://underscorejs.org/#unescape

यह बहुत अच्छा जवाब है आप इस तरह कोणीय के साथ इसका उपयोग कर सकते हैं:

  moduleDefinitions.filter('sanitize', ['$sce', function($sce) { return function(htmlCode) { var txt = document.createElement("textarea"); txt.innerHTML = htmlCode; return $sce.trustAsHtml(txt.value); } }]);