问题如下。因为我使用的后端使用了破坏的挂架0.9.7版本,它会在保存时自动转义cookie(I'm using Pylons and having issues with response.set_cookie。而且我无法将其更新为固定版本)cyrilic url'从请求中保存在cookie中的转换为奇怪的转义字符串。例如:
ооо-фронталь.рф
将保存为
\320\276\320\276\320\276-\321\204\321\200\320\276\320\275\321\202\320\260\320\273\321\214.\321\200\321\204`
我在保存之前尝试用urllib引用它,但后来我离开了:
'%5C320%5C276%5C320%5C276%5C320%5C276-%5C321%5C204%5C321%5C200%5C320%5C276%5C320%5C275%5C321%5C202%5C320%5C260%5C320%5C273%5C321%5C214.%5C321%5C200%5C321%5C204'
实际上并没有以任何方式使事情变得更好。有没有办法用javascript解码这个?编码/ decodeURI在这种情况下工作:/
答案 0 :(得分:1)
它们是UTF-8八进制转义符,因此很难用JavaScript转换。
他是一种可行的方式,虽然它非常可怕:
由于十六进制\320\276
为0xD0 0xBE
所以网址编码为%D0%BE
所以:
var s = "\\320\\276\\320\\276\\320\\276-\\321\\204\\321\\200\\320\\276\\320\\275\\321\\202\\320\\260\\320\\273\\321\\214.\\321\\200\\321\\204"
var r = s.replace(/\\(\d{3})?/g, function(a, b) {
//octal to hex
return "%" + parseInt(b, 8).toString(16);
});
alert( decodeURIComponent(r) );