[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
2000/10/11 22:35 from Umjammer
Title: [teenbbs:780] 報告ですー。

No.   : 780
Sender: Umjammer
URL   : 
Title : 報告ですー。

 30番あたりの書き込みを参考にしてやってみました。
 HP 200LX+Paldio611Sという環境下で、HTTPGETでもって掲示板への書き込み成
功しました。でもまだ半手動url-encode処理をして、かつASCII文字のみですが。

 書き込みをした掲示板はT-CUPの掲示板(MiniBBS互換!?)で、まあ具体的には下
記アドレスです。LX系の掲示板なんですが。

http://www62.tcup.com/6207/proteus.html

ところで、

コード変換 > Qエンコード > URLエンコード

 という処理を経て初めて日本語が使えるということですが、(東Bの火事で消滅
してしまったという)具体的なところを教えてほしいのです。

 コード変換はNKFやQKCでOKとしてQエンコードですが、DOS上でQエンコードでき
るツールがよくわかりませんでした。
 MPACKは、デフォルトではBASE64でエンコードしますが。マニュアルを読んで
も、エンコードの種類を変えられるスイッチはないようでした。
 ほかに適当なものも見つからず。
 どうかDOS上でQエンコードできるツールを教えて下さい。

 URLエンコードについていろいろ調べてみますと、特に複雑な処理でもなく、単
なる置換でいけるものだということがわかりました。

jperl urlenc.pl kakiko.tmp > kakiko.bod

みたいな。

 Web上で見つけたURLエンコードの手順としては以下のようなものがありました
(ほんとはちょっと違うけど、自分でわからないなりにスクリプトとして完結さ
せてみた)。これでOKですか? なんか結果が違うんですけど。空白が「%20」に
なったりとか。後述の「半手動」で使っているcgiだと半角スペースは「+」にな
りますね。

#!/usr/local/bin/perl
While(<>){
	s/(\W)/sprintf("%%%02X", ord($1))/eg;
	print;
}

 冒頭の「半手動」とは、そういう処理をするcgiを自分のWebスペースで実行さ
せて、そこからコピーペーストした、ということを意味してます。

http://homepage2.nifty.com/buckeye/software/dl.htm

 そのcgiとは、上記のURLからダウンロードできる「フォーム解析ツール」のこ
とです。このツールは大変便利で、書き込みフォームからcgiに渡される引数をす
べて表示してくれます。TBBSUPやHTTPGET用の書き込み雛形ファイルを作るのに
もってこいです。副産物として、フォームに日本語を入力するとURIエスケープし
て表示してくれるのです(^^;(これはサーバのほうでやっているのかな?)

>これは RFC をちゃんと読めば \x0D0A が正しいことが分かります.

素朴な疑問なのですが、必然的に改行が入る本文を、どうやって引数のパラメー
タとして1行にまとめるかということがわかりません。

普通にフォームから投稿しようとする場合、本文には改行を入れるわけですが、
これがどのような形でcgiに渡っているのかということがわからないわけです。

HTTPGETで書き込みをアップしようとする場合、目的のWebBBSのcgiにPOSTアク
ションで与える引数を、「Request-Entity-Body:」に記述するファイル内に1行に
まとめる必要があります。1行にまとめつつ改行を活かしたい場合、どうするかと
僕が考えると、本文部分のみに以下のスクリプトを適用して、\x0D0Aを<BR>に
変換して1行にまとめてしまう、という単純な方法を思い浮かべてしまいます。

#!/usr/local/bin/perl
While(<>){
	s/\x0D\x0A|\x0D|\x0A/<BR>/g;
	print;
}

これでよいですか?
Qエンコードする前にこの処理をするか、それともQエンコードすることでCR+LFも
エンコードされる? で1行にまとまる?

バカなこといってたらすいません。

[レスを書く]