2012-04-02 2 views
2

Ich habe eine Zeichenfolge wie folgt: "abcde 李". Es kann eine beliebige Zeichenfolge mit nicht lateinischen Zeichen sein.Wie kann man eine beliebige Zeichenfolge für die Anfrage in Node.js codieren?

ich mag es kodieren in Anforderung verwendet werden, so wird es „ABCDE% E6% 9D% 8E“ und kann für http.request verwendet werden.

Ich habe dies versucht:

str.toString("utf-8"); 

oder

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

aber keiner von ihnen arbeiten. Was ist der richtige Weg, damit umzugehen?

Antwort

3

Dieser String ist bereits UTF-8. Es sieht aus wie Sie versuchen, es für den Einsatz in einem HTTP query string zu entkommen, versuchen Sie es so:

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

Sie sind der Mann !!!! Ich bin immer verwirrt, wie man mit der Kodierung und der Flucht zurechtkommt. Danke. :) – murvinlai

+2

In diesem Fall, was ist der Unterschied zwischen qs.escape und encodeURI? – Kevin

+0

@Kelvin: Es gibt praktisch keinen Unterschied für dieses Beispiel. Die node.js docs für [ 'querystring.escape (...)'] (http://nodejs.org/docs/latest/api/querystring.html#querystring_querystring_escape) auch beachten, dass die Funktion in erster Linie vorhanden ist, so dass es außer Kraft gesetzt werden. Die Verwendung von ['encodeURI (...)'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI) sollte zu demselben Ergebnis führen. – maerics

Verwandte Themen