2012-01-21 3 views
0

У меня есть переменная javascript, которая хранит URL-адрес. Я должен отправить этот URL-адрес для выполнения операций, и поскольку URL-адрес может содержать специальные символы, я конвертирую его в шестнадцатеричный, чтобы избежать проблем. Бэкэнд-код не мой, я даже не вижу код.Какая кодировка символов используется в бэкэнде?

Кодировка работала нормально, когда я пытался с IP-адресами, например, если я хочу отправить «192.168.1.1» в JavaScript, я кодирую его в «3139322e3136382e312e31», а бэкэнд прекрасно это понимает.

Проблема возникает, когда я пытаюсь с доменом, то, что бэкэнд ожидает и что я посылаю не соответствует. Если я хочу отправить «cstmal» в JavaScript, я кодирую его на «6373746d616c», но сервер ждет «7066677A6e79».

Что не так? Я много смотрел, но я не могу найти ответ.

код я использую для кодирования является:

function encode(str) { 
    var result = ""; 
    for (var i = 0; i < str.length; i++) { 
     result += str.charCodeAt(i).toString(16); 
    } 
    return result; 
} 

Короче говоря, вы знаете, что характер преобразования дает этот результат:

с = 70
s = 66
т = 67
м = 7A
а = 6E
л = 79

Спасибо!

+0

Откуда вы знаете, что сервер «ждет»? Я серьезно сомневаюсь, что это реальная кодировка символов, которые, по вашему мнению, кодируются. – Pointy

+0

Когда я делаю операцию создания, в BD создается ссылка с преобразованным доменом. Там я вижу, что они делают. –

ответ

0

Как ни странно, данные, по-видимому, кодируются гниль-13. Например, cstmal становится pfgzny в rot-13, и когда вы заменяете символы своими кодами Ascii как две шестнадцатеричные цифры, вы получаете 7066677A6e79. Реализация JavaScript проста, но см., Например, 4umi Rot13.

0

AFAIK most encodings используют одни и те же коды для буквенно-цифровых символов (диапазон 1-128), поэтому, если он работает для чисел, он должен работать и для символов a-z. Если вы знаете, какой код возвращает сервер для каждой буквы, вы можете создать собственное сопоставление, например создать объект {'c': '70', 's': '66', ...} и использовать его для кодирования строк.

+0

Не лучшее решение, но это лучшее решение для меня. Очень спасибо за эту идею. –

Смежные вопросы