• ベストアンサー

textareaの入力データで無駄な改行が…

textareaでデータ入力し、perlで拾うと無駄に改行が入ってしまいます。 <textarea name="textarea_data"> a a a </textarea> これをPerlで拾って表示させると a a a と表示されてしまいます。 改行が無駄に一つ入ってしまっているのですが、考えられる原因は何でしょうか? print "$FORM{'textarea_data'}"; で表示させています。\n等は入れていません。

質問者が選んだベストアンサー

  • ベストアンサー
  • bgbg
  • ベストアンサー率53% (94/175)
回答No.2

入力側の改行コードがCRLFになっているからではないでしょうか。 もしサーバがunix系OSで、改行コードがCRLFのデータをそのままコンソールに出力させると改行2つ分に見えるかもしれません。 参考URLのサイトのように改行コードを統一すると解決するかもしれません。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
gottyato
質問者

お礼

ありがとうございます。 お察しの通り、OSはLinuxを使っており、HTML部、CGI部、双方の文字コードををEUCにしたところ、解決しました。 お騒がせしました。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

改行コードの問題ですね。\r\nになっています。 $FORM{'textarea_data'} =~ s/\r\n|\r/\n/g; \nに統一したほうがいいでしょう。

gottyato
質問者

お礼

無事、解決いたしました。 ありがとうございました。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

連想配列(ハッシュ)%FORMにフォームデータを入れる処理に問題があると思いますがその辺りはどういう処理にしているのでしょうか?

gottyato
質問者

お礼

無事、解決しました。 ありがとうございました。

gottyato
質問者

補足

フォームデータの読み込み部はこれですね…。 よろしくお願いします。 #========================# # フォームデータ読み込み # #========================# sub form_read{ if($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else{ $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } $action=$FORM{'action'}; }

関連するQ&A