दिलचस्प पोस्ट
पेज लोड हो रहा है जब तक पृष्ठ लोड हो रहा है दिखाने के लिए JSF facelets टेम्पलेट पैकेजिंग स्थैतिक कॉन्स्ट फ्लोट की अनुमति क्यों नहीं है? जब स्क्रॉल सक्षम किया जाता है, तो `कॉल ड्रागिंग कैश 'पर कॉल करें संपूर्ण एंड्रॉइड ऐप के लिए डिफॉल्ट फ़ॉन्ट परिवार कैसे सेट करें PHP दिनांक स्वरूप परिवर्तित किसी अन्य प्रोजेक्ट में एक एंड्रॉइड लाइब्रेरी प्रोजेक्ट गतिविधि का उपयोग करना पीएसएलएल में मौजूदा महीने की गणना कैसे करें? प्रतिक्रिया सामग्री प्रकार CSV के रूप में मैं एसिंक्रोनस, अजाक्स अनुरोध के बजाय एक तुल्यकालिक प्रदर्शन करने के लिए jQuery कैसे प्राप्त करूं? एंड्रॉइड और एक्सएमपीपी: वर्तमान में उपलब्ध समाधान आप सी # में एकाधिक मान मानों को कैसे पारित करते हैं? मैं ASP.Net MVC रूटिंग का उपयोग कर मार्ग कैसे करूं? गाऊसी किसी भी अंतर्निहित गाऊसी कार्यों का उपयोग किए बिना एक छवि को कैसे धुंधला कर सकता है? क्या है "= नल" और "आईएस नल"

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

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

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

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

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

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

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

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग को डीकोड करने का सही तरीका क्या है जिसमें इसमें विशेष 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); } }]);