2013-04-06 12 views
7

これで、以前にNodeでphlでurlエンコードされた文字列をデコードしようとしています。約一ヶ月前、私はと協力し、それを持っていた:NodeJSのurldecode(php)に最適な方法

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

そして、それだけで動作を停止 - それはいくつかのノードのアップグレードまたは何だったかどうかわかりません。その周りを遊んだ後、私は 'unescape()'を使うことができるようだが、それでも確実であれば確信が持てない。

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

私の質問は、この問題に気づいたことがあります。最初の行は単純な文字列で動作しますが、奇妙な文字で分断されていることに注意してください。ここで

は文字列です:。

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

は今http://www.tareeinternet.com/scripts/unescape.htmlに行き、それをデコードします。それは私のオリジナルです(RC4で暗号化された文字列です)。 Nodeがその文字列を返すようにします。

+0

に役立ちます。 'querystring.unescape()'は、生のバイト文字列ではなく、エンコードされたUTF-8文字列のみを扱うようです。 – robertklep

答えて

29

Node.jsに組み込まれているunescape関数を使用するだけであれば、結果は必要なものになるはずです。

のNode.js 0.10.1を使用して、インタラクティブシェル上

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

を実行している、私はかなりあなたが取得したいと思い何のように見えた結果として

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

を取得します。

希望 `アンエスケープ(strが)`ちょうどあなたが言及してページのように、それをデコードするようです:-)

+0

うん、それは私が上記のものです - あなたはunescape自体が長い文字列に最終的に壊れてしまうように置換ビットを追加する必要があります - 私は試してみました。私はなぜquerstring.unescapeが突然私のために働いていないのか不思議です – cyberwombat

関連する問題