2012-01-21 3 views
0

url을 저장하는 javascript 변수가 있습니다. 일부 URL을 백엔드로 보내야만 URL에 특수 문자가 포함될 수 있으므로 문제가 발생하지 않도록 16 진수로 변환합니다. 백엔드 코드는 제 것이 아니며 코드를 볼 수 없습니다.백엔드에서 사용중인 문자 인코딩은 무엇입니까?

IP로 시도 할 때 인코딩이 잘 작동합니다. 예를 들어 JavaScript에서 '192.168.1.1'을 보내고 싶다면 '3139322e3136382e312e31'로 인코딩하고 백엔드는 완벽하게 이해합니다.

도메인을 시도한 후 그 백엔드가 예상하고 전송 한 메일이 일치하지 않는 경우 문제가 발생합니다. JavaScript에서 'cstmal'을 보내려면 '6373746d616c'로 인코딩하지만 서버는 '7066677A6e79'를 기다립니다.

무엇이 잘못 되었나요? 나는 많이 보았지만 대답은 찾을 수 없다.

내가 인코딩에 사용하는 코드는 다음과 같습니다 한마디로

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

,이 결과를주는 무슨 문자 변환 알고 :

C = 70
의 = 66
t = 67
을 m = 7A
A = 6E
L = 79

고마워요!

+0

서버가 "대기"하는 것을 어떻게 알 수 있습니까? 나는 그것이 당신이 그것이 인코딩한다고 생각하는 캐릭터의 실제 인코딩이라고 진지하게 의심합니다. – Pointy

+0

생성 작업을 수행하면 변환 된 도메인을 사용하여 BD에 링크가 만들어집니다. 거기서 나는 그들이하는 일을보고있다. –

답변

0

이상하게 들릴 수도 있지만 데이터는 썩은 -13으로 인코딩 된 것으로 보입니다. 예를 들어, cstmal은 rot-13에서 pfgzny가되고 Ascii 코드로 두 자리의 16 진수로 문자를 바꾸면 7066677A6e79가됩니다. 자바 스크립트 구현은 간단하지만 예를 들어 4umi Rot13.

0

AFAIK 대부분의 인코딩은 영숫자 (1-128 범위)에 대해 동일한 코드를 사용하므로 숫자에 대해 작동하는 경우 영숫자 문자에도 사용할 수 있습니다. 모든 문자에 대해 서버가 반환하는 코드를 알고 있다면 객체 {'c': '70', 's': '66', ...}을 생성하고 문자열을 인코딩하는 등의 자체 매핑을 구축 할 수 있습니다.

+0

좋은 해결책은 아니지만 나에게 가장 좋은 해결책입니다. 아이디어에 대해 대단히 고마워. –

관련 문제