68user's page 掲示板

Prev< No. 1460> Next  [最新発言に戻る] [過去ログ一覧]
No. 1460 # 辻 義一 [E-mail] 2000/12/13 (水) 18:54:11
初めまして、辻 です。

HTTPでGETするプログラムを作成しています。HTTP クライアントを作ってみよう(4) を参考にさせていただいて、URLのエンコードしようとしています。

で、
/~user/hoge.cgi?fuga=ABC!"$ DEF+

/%7euser/hoge.cgi?fuga%3DABC%21%22%5C%24+DEF%20
と書かれています。自分で作ったプログラムで確かめてみると、
/%7euser/hoge.cgi?fuga%3dABC%21%22%24+DEF%2b
となりました。

また、URLのエンコードの対象はURL全てですか?それとも、CGIとかで使われる、?の後ろのみなのでしょうか?~が含まれるので、そんなことはないでしょうが。?そのものは、対象にならないようですし、ファイル名に@等がついてたりしたらどうなるのでしょうか?

ちなみに、
string yHttpGet::UrlEncode(string url)
{
    char buff[10];

    for(int i=0; i<url.length(); i++)
    {
        char c = url.at(i);

        if(((c <'0') || ('9' < c)) && ((c < 'a') || ('z' < c)) && ((c < 'A') || ('Z' < c)) && ('/' != c) && ('?' != c) && (' ' != c) && ('_' != c) && ('-' != c) && ('.' != c) && ('*' != c))
        {
            sprintf(buff, "%%%02x", c);
            url.replace(i, 1, buff);
        }
        else if(c == ' ')
        {
            url.replace(i, 1, "+");
        }
    }

    return url;
}
今のところ、このようなコードを書いています。

Prev< No. 1460> Next  [最新発言に戻る] [過去ログ一覧]