2012-01-21 9 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
S = 66
トン= 67
を m = 7A
a = 6E
l = 79

ありがとうございました!

+0

サーバーが待機していることをどのように知っていますか?私はそれがあなたがエンコーディングしていると思う文字の実際のエンコーディングだと真剣に疑っています。 – Pointy

+0

作成操作を行うと、ドメインが変換されたBDでリンクが作成されます。そこに私は彼らが何をしているかを見ます。 –

答えて

0

奇妙なことに、データはrot-13でエンコードされているようです。たとえば、cstmalはrot-13でpfgznyになり、Asciiコードで2桁の16進数で置き換えると7066677A6e79になります。 JavaScriptの実装は単純ですが、たとえば4umi Rot13

0

AFAIKのほとんどのエンコーディングでは、英数字(1〜128の範囲)に同じコードが使用されているため、数字にも機能する場合は、a〜z文字でも機能するはずです。すべての文字に対してサーバーが返すコードを知っている場合は、オブジェクト{'c': '70', 's': '66', ...}を作成して文字列をエンコードするような独自のマッピングを作成できます。

+0

良い解決策ではありませんが、私にとって最高の解決策です。このアイデアには大変感謝しています。 –

関連する問題