2010-11-24 13 views
0

googleやwikipediaのようなサイトの多くは、16進数で先頭に '%'記号を付けて非英語文字をエンコードします。 URLをパイプに入れることができるツールを探しました。そのような%AA文字列が満たされると、これらの記号をutfに変換して読み込みます。URLから16進数をデコードする

私は1つを見つけることができなかったとして、私はCでそれを自分で書いて、私は多分あなたはそれが役立つだろう、あなたとそれを共有したい:

#include <stdio.h> 
int main() 
    { 
     char c; 
     unsigned int i; 
     while (!feof(stdin)) 
     { 
       if (0==fread(&c,1,1,stdin)) break; 
       if (c!='%') putchar(c); 
       else 
       { 
         if (scanf("%X",&i)==1) putchar(i); 
         else putchar('%'); 
       } 
     } 
     return 0; 
} 

使用例:

#echo "http://he.wikipedia.org/wiki/%D7%A2%D7%9E%D7%95%D7%93_%D7%A8%D7%90%D7%A9%D7% 99 " | ./dumpHex

結果:VCで

http://he.wikipedia.org/wiki/עמוד_ראשי 
+0

あなたが使用しているどのような言語とフレームワークに依存して、このようなユーティリティは共通している:[ジャワ](http://publib.boulder.ibm.com/infocenter/ledoc/v6r1/index。 jsp?topic =/com.ibm.rcp.jcl.desktop.javadoc/doc/java/net/URLDecoder.html)、[Net](http://msdn.microsoft.com/en-us/library/6196h3wt。 aspx)、[PHP](http://php.net/manual/en/function.urldecode.php)など... – jball

答えて

1

++:

string dec = URLDecoder::decode(url) 

PHP:

$d = urldecode($u) 

のJava:

String dec = URLDecoder.decode(url,"UTF-8"); 

等...

+0

これらすべてのデコードURLは、ヘキサではありません。 – akiva

+0

あなたの質問は、[URLエンコーディング](http://www.rfc-editor.org/rfc/rfc1738.txt)の特定のケースである文字列、つまり安全ではない文字の変換を示しますURL中の「%xx」の形式でオクテットに変換します。「x.x」は16進数です。 – jball

+0

@akiva_eshbal厳密に言えば、16進数のオクタットを文字に変換し、各オクタクトが前の ''%''で非エンコードのコンテンツと区別されている場合は、URLエンコーディングまたはそのアダプテーションのいずれかを調べています。 – jball

関連する問題