用javascript解码转义的西里尔字母

Decode escaped Cyrillic with javascript

本文关键字:javascript 解码 转义      更新时间:2023-09-26

问题如下:因为我正在使用的后端使用破碎的pylons 0.9.7版本,它在保存时自动转escape cookie(我使用pylons并有响应问题)。set_cookie。我不能更新它到一个固定的rev)西里尔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 ?encode/decodeURI在这种情况下不起作用:/

它们是UTF-8八进制转义,因此很难在JavaScript中转换。

他是一种可能有效的方法,尽管它相当糟糕:

由于十六进制'320'2760xD0 0xBE,所以URL编码是%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) );