NodeJS decodeURIComponent не работает должным образом

Когда я попытался декодировать строку ниже в nodeJS, используя decodeURLCompnent:

var decoded = decodeURI('Ulysses%20Guimar%C3%A3es%20-%20lado%20par');
console.log(decoded);

я получил

Ulysses Guimarães - lado par

Вместо

Avenida Ulysses Guimarães - lado par 

Но когда я использую тот же код на стороне клиента (в браузере), я могу получить правильный символ 'ã'.

Есть ли способ преобразовать из ã в ã в сценарии Node?

3 ответа

Решение

Я не могу воспроизвести его в 0.10 или 0.11 версиях узла.

Вы можете конвертировать первый во второй, используя new Buffer('Ulysses Guimarães - lado par', 'binary').toString('utf8'), но это обходной путь, а не решение.

Вы уверены, что звоните decodeURI, а не unescape?

Использование var querystring = require("querystring");

Метод querystring.unescape() выполняет декодирование символов, закодированных в процентах URL на заданной строке.

а потом querystring.unescape(str) согласно документам:

https://nodejs.org/api/querystring.html

Я просто оставляю это здесь, потому что у меня была такая же проблема. Я использовал encodeURIcomponent(str) Функция в клиенте и в Nodejs, когда я сделал decodeURI(str) была такая же проблема. Я решил это с помощью encodeURI(str) у клиента.

Другие вопросы по тегам