2013-04-06 80 views
7

所以我想解碼一個之前在Node中用php編碼的字符串。大約一個月前,我曾與它的工作:NodeJS中的urldecode(php)的最佳方式

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

那麼它只是停止工作 - 如果不知道這是一些節點的升級還是什麼。在玩過之後,似乎我可以使用'unescape()',但如果它是萬無一失的,我不確定它。

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

我的問題是什麼是最好的方法,並有其他人注意到這個問題。請注意,第一行使用簡單的字符串,但打破了奇怪的字符 - 所以也許一些編碼問題,我沒有看到。

這裏有一個字符串:

%E6%82%CCI-T%8C%01 + A

現在去http://www.tareeinternet.com/scripts/unescape.html和解碼。這是我原來的(這是一個RC4加密字符串)。我希望節點返回該字符串。

+0

似乎'unescape(str)'就像你提到的頁面一樣解碼它;它看起來像'querystring.unescape()'只處理編碼的UTF-8字符串,而不是原始字節字符串。 – robertklep 2013-04-06 19:49:28

回答

29

如果您只是使用內置到Node.js中的unescape函數,您的結果應該是您想要的。

如何使用Node.js 0.10.1和運行

unescape('%E6.%82%CCI-T%8C%01+A'); 
在交互shell

,我得到

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

的結果看起來很像你希望得到什麼。

希望這會有所幫助:-)

+0

嗯是的,這是我的以上 - 你需要添加替換位作爲unescape本身將最終打破長字符串 - 我試過了。我只是好奇爲什麼querstring.unescape突然停止爲我工作 – cyberwombat 2013-04-06 20:44:02