WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:画面上に変なものがでてしまう

やす[MAIL][URL][WriteDate : Mon Sep 25 21:56:06 2000]

CGIを使って、全画面からの情報を取得して、jcode.plを使用して変換して、HTML画面で表示すると 「  松本 秀人・  」 のように一番後ろに  「・」 が表示されてしまいます。ソース表示をすると「  松本 秀人?  」  をなっていました。これはなんなのですか?何か変換の仕方が間違っているのでしょうか?教えて下さい。お願いします。

ちゃいぱ[MAIL][URL][WriteDate :Tue Sep 26 09:48:21 2000]


>ソース表示をすると「  松本 秀人?  」
「人?」を「人」だけにしたらどうですか?

「?」は、ゴミではないでしょうか?

詳しい状況が、わからないので、なんとも...。 

やす[MAIL][URL][WriteDate :Tue Sep 26 11:25:28 2000]

質問が中途半端ですいません。。
詳しく書きます。

まず、HTMLの画面があり、そこに名前を入力するtextタグがあります。
そこに名前を入力し、送信ボタンを押すと、POSTでデータが送信され、
次画面のCGIのPGの中でそのデータを受け取り、デコード処理をし、それを画面に表示さすといったPGです。デコード処理は以下のようにしています。
@param = split('&', $form_data);
foreach $data (@param) {
($valiable, $value) =  split('=', $data);
#デコード処理
$valiable =~ tr/+/ /;
$valiable =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack"C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*valiable, $code);
&jcode'convert(*value, $code);
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\s*//g;
$value =~ tr/\r\n//d;
$form{$valiable} = $value;
}

このデータを
$Name_1 = $form{'Name_1'}; #姓
$Name_2 = $form{'Name_2'}; #名
という風に変数に落として、これを画面に表示さしているんですが。。。
「?」がゴミだとすれば、どのようにしたら取り除けますか?
よろしくお願いします。


ちゃいぱ[MAIL][URL][WriteDate :Tue Sep 26 12:32:58 2000]

$codeはどんな値が入りますか?

また、
&jcode'convert(*valiable, $code); 
&jcode'convert(*value, $code); 
$value =~ s/&/&/g; 
$value =~ s/"/"/g; 
$value =~ s/</</g; 
$value =~ s/>/>/g; 
$value =~ s/\s*//g; 
$value =~ tr/\r\n//d; 
$form{$valiable} = $value; 

$value =~ s/&/&/g; 
$value =~ s/"/"/g; 
$value =~ s/</</g; 
$value =~ s/>/>/g; 
$value =~ s/\s*//g; 
$value =~ tr/\r\n//d;
&jcode'convert(*valiable, $code); 
&jcode'convert(*value, $code); 
$form{$valiable} = $value; 
にして見て下さい!

やす[MAIL][URL][WriteDate :Tue Sep 26 13:16:43 2000]

$codeには 'sjis' が入っています。
ちゃいぱさんに教えて頂いたように(上記のやり方)
してみたのですが、ゴミがついたままになってしまします。。。。
何か他に方法ないですかねー?
あれば教えて下さい。


ちゃいぱ[MAIL][URL][WriteDate :Tue Sep 26 13:31:20 2000]

では、試しに

&jcode'convert(*valiable, 'euc');  
&jcode'convert(*value, 'euc');  
$value =~ s/&/&/g;  
$value =~ s/"/"/g;  
$value =~ s/</</g;  
$value =~ s/>/>/g;  
$value =~ s/\s*//g;  
$value =~ tr/\r\n//d; 
&jcode'convert(*valiable, $code);  
&jcode'convert(*value, $code);  

でどうですか?


また、関係ないけど、気が付いたのですが...。

$value =~ s/&/&/g; 
$value =~ s/"/"/g; 
$value =~ s/</</g; 
$value =~ s/>/>/g; 

は、意味があるのですか?


Qz[MAIL][URL][WriteDate :Tue Sep 26 15:20:14 2000]

上から3つめのサンプルを、コピーして、実行して、ためしたところ、特に文字化けは発生しません。
($valiable =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack"C", hex($1))/eg; でエラーでましたけど)

ですので、べつのところに原因があるのでは?
ためしに、フォームの情報をデコードしたあとに、
foreach(keys(%form)){
print $form{$_};
print "<br>";
}
とかやって、%formにはいってきた中身を確認してみました?



やす[MAIL][URL][WriteDate :Tue Sep 26 15:29:23 2000]

上記の 「$value」 の部分なのですが、値に「&」、「"」、「<」、「>」が入っていれば、それぞれ 「&」「"」「<」「>」に変換するように設定しているのですが、この画面ではそれらが変換されてしまっているようです。。。。

&jcode'convert(*value, 'euc')はまだ試していないので、試したらまた連絡いたします。


やす[MAIL][URL][WriteDate :Tue Sep 26 15:54:59 2000]

できました!!変なゴミが表示されなくなりました!!!
こんなしょうもない質問に何回も返事をいただいてどうも
ホンマにどうもありがとうございます!!

やす[MAIL][URL][WriteDate :Tue Sep 26 15:55:08 2000]

できました!!変なゴミが表示されなくなりました!!!
こんなしょうもない質問に何回も返事をいただいてどうも
ホンマにどうもありがとうございます!!
回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]