62

文字列がすでにエンコードされているかどうかを確認するにはどうすればよいですか?

たとえば、 をエンコードするTEST==と、 が得られTEST%3D%3Dます。最後の文字列を再度エンコードすると、 が得られますTEST%253D%253D。それが既にエンコードされている場合は、それを行う前に知る必要があります...

エンコードされたパラメーターを保存しましたが、それらを検索する必要があります。入力パラメータが何であるか、エンコードされているかどうかわからないので、検索する前にエンコードまたはデコードする必要があるかどうかを知る必要があります。

4

11 に答える 11

52

デコードして、オリジナルと比較します。異なる場合は、オリジナルがエンコードされます。異ならない場合、オリジナルはエンコードされていません。しかし、新しくデコードされたバージョンがまだエンコードされていないかどうかについては何も言いません。再帰に適したタスク。

urlencode で quine を記述できないことを願っています。そうしないと、このアルゴリズムがスタックしてしまいます。

例外: 文字列に「+」文字が含まれている場合、文字列が URL エンコードされていなくても、URL デコーダーはそれをスペースに置き換えます。

于 2010-02-19T09:45:58.753 に答える
18

regexp を使用して、文字列に不正な文字 (空白など、URL エンコードされた文字列に見つからない文字) が含まれていないかどうかを確認します。

于 2010-02-19T09:50:35.893 に答える
3

弦が特定のパターンに準拠しているか、弦を追跡していない限り、確実に知ることはできません。ご自身で指摘したように、エンコードされた文字列もエンコードできるため、文字列自体を見て 100% 確信することはできません。

于 2010-02-19T09:39:25.120 に答える
3

Joel on software は、いつかこれに対する解決策を持っていました

于 2010-02-19T09:55:27.707 に答える