新規記事投稿 フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mxt.meshnet.or.jp>
Subject: Re: http.plについて質問です
Date: 1997/03/29 15:21:49
Reference: mesh.program/00256

3月28日に、にあさんは書きました。

>うぇぶ会議室に使っているスクリプト群のうち、にあの手になる物には、
>"you can redistribute it and/or modify it for any purpose." という
>文字列が入っていると思います。つまり如何ように料理してもらっても
>構わない、と言うことで、Copyright (C) は入っているものの、ほとんど
>PDSに近いものとして扱って下さい。もちろん、修正、再利用、再配布など
>制限ありません。

おぉ、再配布もOKですか。それはありがとうございます。
それではどんどん利用、再配布させていただきます。
他の人にも利用しやすいように、そのうちに時間があったら、
http.plの各関数の使い方ページでも書いてみたいなぁと思っていますが、
それはいつになるかわかりません。
(もしかしてすでに、にあさんの手元にはそれらしきものがあったりして...
 もしあるのなら、出し惜しみせずにそれも公開して下さい。(^^;; )

#ところでPDSって何ですか?

>>http.pl の中の &amp;url_encode ですが、
>>これは2バイト文字には対応していないように見えるのですが、
>>そうなんですか?
>>
>うーん、これは2バイト文字に限らず、任意の文字を安全に送るための
>encoding をしているはずなので、壊れないと思うのですが...
>どんな文字列だと壊れましたか?

実はですね、「うぇぶ会議室の部屋2」にも書きましたが、
「投稿者集計」のスクリプト中で下のような処理があるのですが、

-------------------
$args{'name'} = $name;
$args{'room'} = $roomopt;
$urldata = &http'make_http_args(%args);
$cntstr = "<A HREF=\"ref_byname.cgi?$urldata\" TARGET=\"contents\">$cntstr</A>";
$out .= sprintf(qq{<TR><TD ALIGN="center">%d</TD><TD>%s さん</TD><TD ALIGN="RIGHT">%s</TD>\n},
 $i, $name, $cntstr);
-------------------

$name = 'TAD';$roomopt = 'ap'; だとすると、$out の内容は下のようになります。
(win95上で、jperl.exeを使ってテストしました。)

-------------------
<TR><TD ALIGN="center">56</TD><TD>TAD さん</TD><TD ALIGN="RIGHT"><A HREF="ref_byname.cgi?name=%82%82%82&room=ap"  TARGET="contents">1 回</A></TD>
-------------------

で、試しにそのままのスクリプトをサーバに送って実行してみたところ
うまく動きました。これは実行環境の違いが原因なのですよね。
特に文字コードの違いがらみの...(これが絡んでくるともう頭の中は???)

そんな中でも私の考えたところでは、
win95では日本語1文字(2byte)を1文字と扱い、
unixでは1バイト文字も2バイト文字も関係なく、1バイトが1文字と扱うところで
上記のような現象が起こったのではないかなと、考えましたが、あってますか?

そんなわけで、&url_encodeの件は問題ないとわかったのですが、
今度は別の問題が... (^^;;
と、ここまで書いてから、ふと思いついたので試してみたら
うまくいってしまいましたので、この件は忘れて下さい。

これで「投稿者集計」の方も機能追加できそうです。

では、長くなってしまいましたが、この辺で...