プロが教えるわが家の防犯対策術!

 現在、フォームからのデータ入力などに関して勉強しているのですが、<textarea>からデータを入力すると、1バイトの改行文字が、改行ごとにくっついてきます。
 改行自体はされるんですが、その余計なものが付いてくるのが困っています。何かしらのスクリプトをダウンロードしたときなども、時々改行部分が半角の■に変わってまして、つまり改行されずにごっちゃになって表示されてしまいます(別の方法で置換処理できるので自分はどーでもいいんですが)。
 他のパソコンから同じCGIをアップロード、実行してみると、以外にもそういった影響はありませんでした。何となく、文字コードが機種とか環境などによって違ってるせいかな、とは感じているのですが、対処法が分かりません。
 スクリプトにどういった手を加えれば、これが出ないようにできるのでしょうか?どうかご教授をお願いします。

A 回答 (3件)

UNIX上に改行コードLFで置いていて、Windows系のOSにFTPするときに


ASCIIモードで転送すれば改行コードはLF->CR+LFに変換されます。
逆向きも同様です。

Perlで置換したいならファイルをオープンした後binmodeを指定すれば
CR:\r
LF:\n
で置換出来ます。
s/\n/\r\n/

binmodeを指定しないと、\n自体がプラットフォームに合せて勝手に判
断してしまうため、この手の置換は出来ません。

こんな感じで如何でしょうか?
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。仰るとおりにしてみたら、見事にできるようになりました。just like magicです(笑)。

 UNIXではCRが余計なせいでゴミが出ていたわけですから、CRを削除してみたらうまくできました。つまり自分がやりたいと思ったときには、既にwindows上CR+LF→UNIX上LFとなっていたんですね。それでUNIX上でのCRが邪魔でゴミが残っていた、という状況だったようです。

 とても助かりました。本当にありがとう御座いました。またなにかありましたら、その時はまた、ご教授をお願いします。

お礼日時:2001/04/21 23:48

スクリプトに於いて。


データを読み込み,希望の形式に変換してから保存する。
これだけでは?
    • good
    • 0

改行コードが違うからですね。



通常Windowsでは改行がCR+LFとなっていて
UNIXではLFのみです。従って、改行するたびに
CRというごみが入るのです。

そこら辺は置換作業で何とかなりますよ。
#ついでに、CGIをやるなら「メモ帳」はやめて
#WZEditorなどの改行コード、文字コードを
#指定できるものにしましょう。
ではでは☆

この回答への補足

 改行文字が入ったデータファイルが作成される場合、それはUNIXサーバ上でできるものだから問題ない(ゴミが入らない)としても、それをwindowsでダウンロードしようとすると、改行コードのCRが足らないせいで改行されずまとまってしまい、改行部分に半角の■ができてしまうのですね。
 それの逆をする、つまりwindows上で改行したデータファイルをアップすると、CR部である半角■と改行になってしまう、ということでよろしいのでしょうか?

 そのため、それを完全に回避する場合にはUNIXと同じ環境、つまりwindows上でも改行文字をLFのみで指定できるテキストエディタが必要なわけですね(どこかで理解のし間違いがあったら訂正をお願いします)。
 でも・・・WZEditorって、高過ぎなんですけど・・・。他にいい方法はありませんか?

 置換で何とかなると仰いましたが、置換でLFをCR+LFにするようなことができるんでしょうか?可能でしたら、是非その方法を教えて下さい(そういうのって本にのってませんね)。
 よろしくお願いします。

補足日時:2001/04/21 05:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!