2012-04-02 30 views
2

我有一個這樣的字符串:「abcde李」。它可以是任何非拉丁字符的字符串。如何在Node.js中爲請求編碼任意字符串?

我想對它進行編碼以便在請求中使用,所以它會是「abcde%E6%9D%8E」並且可以用於http.request。

我已經試過這樣:

str.toString("utf-8"); 

var buffer = new Buffer(str); 
str = buffer.toString('utf-8'); 

但他們沒有工作。處理這個問題的正確方法是什麼?

回答

3

該字符串已經是UTF-8。它看起來像你想逃避它在HTTP query string使用,所以試試這個:

var qs = require('querystring'); 
qs.escape('abcde 李'); // => 'abcde%20%E6%9D%8E' 
+1

你是男人!!!!我總是困惑如何處理編碼和轉義..謝謝。 :) – murvinlai 2012-04-02 22:06:11

+2

在這種情況下,qs.escape和encodeURI有什麼區別? – Kevin 2012-06-28 02:41:11

+0

@Kelvin:這個例子實際上沒有區別。 ['querystring.escape(...)'](http://nodejs.org/docs/latest/api/querystring.html#querystring_querystring_escape)的node.js文檔甚至注意到函數的存在主要是爲了它可以被覆蓋。使用['encodeURI(...)'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI)應該會得到相同的結果。 – maerics 2012-06-28 05:20:36

相關問題