dポイントプレゼントキャンペーン実施中!

PHPのfopen時のバイナリモードについて質問です。

PHPのマニュアルにはWINDOWSのようなバイナリとテキストモードの形式の違う
システムでは、画像等のバイナリファイルを扱うときはbを付けてバイナリモードで扱うことが推奨されていますが、
WINDOWS環境でためしたところ、画像ファイルをバイナリではなくテキストモードで開いて中身のデータを読み込んで、別名でfopen("~.jpg","w")で書き込んでも、きちんと表示される画像が作成されました。

テキストモードでバイナリファイルを開いても読み込めってさらに、新規でかきこめるなら
なぜ二つのモードが存在するのでしょうか?

ちなみに、WINDOWSにおけるバイナリとテキストモードの違いって改行文字が
¥nか¥r¥nの違いだけでしょうか?
リナックスではバイナリもテキストも中身の改行文字は¥nとなるのでしょうか?

よろしくお願いします。

A 回答 (2件)

Windows以外のOSでは、バイナリモードというのはなく、"wb" "rb" も "w" "r" も同じ動作です。

Windowsとのソース互換性のため、"b" をつけてもエラーになりません。

Windowsのバイナリモードはそのままファイルを読み込む/書き込む。テキストモードは、"\r\n" を "\n" に変換しながら読み込み、"\n" を "\r\n" に変換しながら書き込む。
    • good
    • 1

>画像ファイルをバイナリではなくテキストモードで開いて中身のデータを読み込ん



その画像ファイルの中には\r\nというつながりのコードが存在するのでしょうか?
マニュアルに書いてある通り
「互換性の意味から、常に適切なフラグを指定することが推奨」されているわけです
    • good
    • 0

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