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