Javascript-форум (https://javascript.ru/forum/)
-   Мобильный JavaScript (https://javascript.ru/forum/mobile/)
-   -   encode url с русских букв (https://javascript.ru/forum/mobile/45262-encode-url-s-russkikh-bukv.html)

andreyua 21.02.2014 00:10

encode url с русских букв
 
Есть
var string "русскоеблалала";
нужно сделать энкоде урл в cp1251 а не в UTF-8
Есть метод ?

Вот так нужно чтобы было:
encstring = %F0%F3%F1%F1%EA%EE%E5%E1%EB%E0%EB%E0%EB%E0

Deff 21.02.2014 00:44

1. Наверено желаемо в итоге отправить аякс запрос ?
2. Есть исходная форма ? Если есть , приведите

andreyua 21.02.2014 00:50

Да все просто
Тупо открываю урл с джава скрипта
http://site.com/search.php?s=русскоеслово
Если посылать без перекодировок, получается ахинея
русскоеслово

Нужно сделать урл енкоде () , то есть escape последовательность русского слова в кодировке windows-1251:

То есть мне нужно загнать в переменную такую вот строку:
http://site.com/search.php?s=%F0%F3%...F1%EB%EE%E2%EE

////////
http://site.com/search.php?s=русскоеслово = http://site.com/search.php?s=%F0%F3%...F1%EB%EE%E2%EE
///////

Octane 21.02.2014 00:56

http://xpoint.ru/know-how/JavaScript...iySRusskimiBuk

andreyua 21.02.2014 00:57

Спасибо, какраз эту статью я тестировал сейчас :)
Есть другие методы ?

Deff 21.02.2014 01:02

Чот делал под себя:
(function(){
var transAnsiAjaxSys = [];
var arr=[0x402,0x403,0x201A,0x453,0x201E,0x2026,0x2020,0x2021,0x20AC,0x2030,0x409,0x2039,
0x40A,0x40C,0x40B,0x40F,0x452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,'0',0x2122,0x459,0x203A,0x45A,
0x45C,0x45B,0x45F,0x0A0,0x40E,0x45E,0x408,0x0A4,0x490,0x0A6,0x0A7,0x401,0x0A9,0x404,0x0AB,
0x0AC,0x0AD,0x0AE,0x407,0x0B0,0x0B1,0x406,0x456,0x491,0x0B5,0x0B6,0x0B7,0x451,0x2116,0x454,
0x0BB,0x458,0x405,0x455,0x457,0x410,0x411,0x412,0x413,0x414,0x415,0x416,0x417,0x418,0x419,
0x41A,0x41B,0x41C,0x41D,0x41E,0x41F,0x420,0x421,0x422,0x423,0x424,0x425,0x426,0x427,0x428,
0x429,0x42A,0x42B,0x42C,0x42D,0x42E,0x42F,0x430,0x431,0x432,0x433,0x434,0x435,0x436,0x437,
0x438,0x439,0x43A,0x43B,0x43C,0x43D,0x43E,0x43F,0x440,0x441,0x442,0x443,0x444,0x445,0x446,
0x447,0x448,0x449,0x44A,0x44B,0x44C,0x44D,0x44E,0x44F
];
var arLng = arr.length;
for (var i = 0; i < arLng; i++)transAnsiAjaxSys[arr[i]]=i+128;
encodeURIwin125 = function(str){
  var ret = [];
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof transAnsiAjaxSys[n] != 'undefined')
      n = transAnsiAjaxSys[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return  escape(String.fromCharCode.apply(null, ret)).replace(/\+/mg,'%2B');
}
}());
alert(encodeURIwin125("русскоеблалала"))

andreyua 21.02.2014 01:04

Спасибо всем

danik.js 21.02.2014 01:16

Это ж как надо постараться, чтоб создать себе проблему с кодировкой. Весь мир уже давно юзает UTF-8 и не знает проблем, а кто-то еще возится со всякими cp-1251 ... Любит гемор видимо..

Deff 21.02.2014 01:25

danik.js,
видать сразу, что В Армии не служил, поскольку если говорят лезь в говно на первом году, лезешь и не задаешь вопросы, и походу и на босса не работал

Octane 21.02.2014 01:34

Не знаю как сейчас, но пару лет назад на таком известном хостинге, как nic.ru по умолчанию сервер выдавал все в win1251. Это легко настраивалось, но никто не заморачивался, в итоге куча сайтов рунета до сих пор использует эту кодировку. Когда просят что-то изменить на сайте, не переделывать же все в UTF, несколько раз приходилось возиться с такой фигней :-/ Надеюсь у ТСа что-то подобное, а не новый сайт в 1251)


Часовой пояс GMT +3, время: 02:48.