2013-04-06 19 views
7

में urldecode (php) का सबसे अच्छा तरीका तो मैं एक स्ट्रिंग को डीकोड करने की कोशिश कर रहा हूं जो पहले नोड में php के साथ urlencoded था। - यकीन नहीं करता है, तो यह कुछ नोड उन्नयन या क्या थानोडजेएस

querystring.unescape(str.replace(/\+/g, '%20')); 

तो यह सिर्फ काम करना बंद कर: के बारे में एक महीने पहले मैं इसके साथ काम कर रहा था। इसके चारों ओर खेलने के बाद ऐसा लगता है कि मैं सिर्फ 'अनदेस्केप()' का उपयोग कर सकता हूं लेकिन मुझे यकीन नहीं है कि यह अभी भी मूर्खतापूर्ण है।

unescape(str.replace(/\+/g, '%20')); 

मेरा प्रश्न यह है कि सबसे अच्छा तरीका क्या है और किसी और ने इस मुद्दे को देखा है। ध्यान दें कि पहली पंक्ति सरल तारों के साथ काम करती है लेकिन अजीब पात्रों के साथ टूट जाती है - तो शायद कुछ एन्कोडिंग समस्या जो मैं नहीं देख रहा हूं। ।

% E6% 82% सीसीआई टी% 8C% 01 + A

अब http://www.tareeinternet.com/scripts/unescape.html पर जाएं और उसे डिकोड:

यहाँ एक स्ट्रिंग है। यह मेरा मूल है (यह एक आरसी 4 एन्क्रिप्टेड स्ट्रिंग है)। मैं नोड को उस स्ट्रिंग को वापस करना चाहता हूं।

+0

ऐसा लगता है 'अनएस्केप (एसटीआर)' यह सिर्फ पेज आप का उल्लेख की तरह डीकोड; ऐसा लगता है कि 'querystring.unescape()' केवल एन्कोडेड यूटीएफ -8 स्ट्रिंग्स से संबंधित है, न कि कच्चे बाइट स्ट्रिंग्स। – robertklep

उत्तर

29

यदि आप केवल unescape फ़ंक्शन का उपयोग करते हैं जो Node.js में बनाया गया है, तो आपका परिणाम वह होना चाहिए जो आप चाहते हैं।

Node.js 0.10.1 का उपयोग करना और

unescape('%E6.%82%CCI-T%8C%01+A'); 
इंटरैक्टिव खोल पर

चल रहा है, मैं परिणाम जो काफी आप प्राप्त करना चाहते हैं क्या की तरह दिखता है के रूप में

'æ.ÌI-T\u0001+A' 

मिलता है।

आशा इस मदद करता है :-)

+0

वैसे हाँ जो मेरे ऊपर है - आपको प्रतिस्थापन बिट को एस्केप के रूप में जोड़ने की आवश्यकता है, अंततः लंबे तारों को तोड़ देगा - मैंने कोशिश की। मैं सिर्फ उत्सुक हूं कि क्यों querstring.unescape अचानक मेरे लिए काम करना बंद कर दिया – cyberwombat