Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Преобразовать Char в HEX (https://javascript.ru/forum/misc/47213-preobrazovat-char-v-hex.html)

Rik 14.05.2014 12:49

Преобразовать Char в HEX
 
Добрый день!
Столкнулся с такой проблемой, решение не кажется тривиальным.
Передаю на сервер запрос через XMLHttpRequest - GET, на сервере проблемы с кодировкой и настроить php сценарий не могу, приходится работать как есть.

В итоге запрос вида /filter.php?search=привет не воспринимает, кодировал через encodeURIComponent, тоже не понимает.
А вот строку вида /filter.php?search=%ef%f0%e8%e2%e5%f2 берёт нормально, строку получил в каком то он-лайн конвертере.
Понимаю что по уму надо php править, но там не моё и туда не пускают, надо делать костыль на java и не смог.
Помогите плиз как строку преобразовать из var str = 'привет'; в var str1 = '%ef%f0%e8%e2%e5%f2';

Заранее Спасибо!!!

depp 14.05.2014 12:58

javascript у вас в UTF-8, а сервер в какой кодировке?

Rik 14.05.2014 13:46

Цитата:

Сообщение от depp (Сообщение 311784)
javascript у вас в UTF-8, а сервер в какой кодировке?

да скрипт в UTF-8 а сервер в windows-1251, для получения корректных данных в responseText, я overrideMimeType выставляю в "text/plain; charset=windows-1251".
А вот с отсылкой по ходу не срабатывает.

depp 14.05.2014 17:00

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++) trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

to_win_1251 = function(str) {
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++) {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined') n = trans[n];
    if (n <= 0xFF) ret.push(n);
  }
  return escape(String.fromCharCode.apply(null, ret));
}
to_win_1251('привет');

взято отсюда:
http://xpoint.ru/know-how/JavaScript...SRusskimiBu k
соотв-но можете подменить функцию encodeURIComponent, или escape как там указано. тогда использование станет более прозрачным.

Rik 14.05.2014 18:00

Цитата:

Сообщение от depp
соотв-но можете подменить функцию encodeURIComponent, или escape как там указано. тогда использование станет более прозрачным.

Отлично заработало!!! Огромное спасибо!!!

Не стану я переопределять стандартные функции, т.к. не известно где ещё может вылезти косяк с этой перекодировкой.


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