1

The problem is as follows. Because the backend I'm working with uses broken pylons 0.9.7 version, which automatically escapes cookies on saving (I'm using Pylons and having issues with response.set_cookie . And I can't update it to a fixed rev) cyrilic url's saved in cookies from a request turn into bizarre escaped strings. For example :

ооо-фронталь.рф

will be saved as

\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`

I've tried quoting it with urllib before save, but then I'm left with :

'%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'

which doesn't actually make things better in any way. Is there any way to decode this with javascript ? encode/decodeURI dosen't work in this case :/

Cœur
  • 37,241
  • 25
  • 195
  • 267
sasklacz
  • 3,610
  • 10
  • 39
  • 58

1 Answers1

1

They are UTF-8 octal escapes so will be hard to convert in JavaScript.

He is a way that may work, although its pretty terrible:

As hex \320\276 is 0xD0 0xBE so URL Encoded is %D0%BE so:

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) );
Alex K.
  • 171,639
  • 30
  • 264
  • 288