よろしくお願いいたします。
CInternetSessionを使ってファイルをダウンロードするアプリケーションをつくっているので
すが、ダウンロードしてきたファイルをみると、げげっ。
ブラウザのソースでは改行されているのに、ダウンロードしてきたファイルでは改行されていな
い箇所が多々あります。
これはなぜですか?そして解決方法は?
ヒントでもかまいませんのでお願いいたします。
unixとWindowsでは改行コードが違うけど?
>ブラウザのソースでは改行されているのに、
>ダウンロードしてきたファイルでは改行されていない箇所が多々あります。
何で確認されました? サーバーは?
「改行コード変換」で色々調べてみると、
改行コードが
Win 13,10
UNIX 10
Mac 13
というとこまでは分かりましたが、変換方法はPerlを使っていたり改行コード変換用のソフト
を使っていたりで、VC++で変換する方法は分かりません。
サーバは・・・UNIXだと思うんですが・・・
CStringクラスのReplaceを使うのが簡単だと思います。
改行をWindowsに統一したい場合は、私はいつも0x0Dをヌルストリングに変換して0x0Aを
0x0D0Aに変換しています。
ただメモ帳以外のエディタでは、両方とも改行して表示してくれるものが多いようで
す。
補足ですが、ブラウザのソースを表示するエディタがメモ帳(IEではデフォルトでメ
モ帳だったと)とした場合、上の『メモ帳以外の~』の通り、見ているエディタが違う
のが改行が異なった原因ですね。
改行されていない箇所は「多々」ですか?「全部」ですか?
自分で振っておいてなんだけど改行コードが原因なら「全部」のはず・・・。
テキストファイルの改行コードがLF(0x0a)のみの場合
VCやワードで開くとCR+LFの場合と同様、改行して表示されます。
メモ帳で開くと(OSによって違うかもしれませんが)改行されずに文字化けします。
エディタによっては文字化けも改行もしないかもしれませんが
( そんなエディタは使いたくない(ーー;) )
問題の症状は改行コードの違いが原因と考えてよいのでしょうか?
できればVC上でバイナリモードでファイルを開き該当箇所のコードを確認してくださ
い。
改行コードが原因なら CInternetSession::OpenURLの場合
3番目の引数にASCIIを指定すれば変換してくれそうな気がします。(試してません)
ダウンロード後のファイルを再度読み込み改行コードを変換して保存しなおす
ことは簡単だと思います。
ダウンロードの過程で改行コードを変換したいなら現在どのような方法を
とられているかソースの一部でも公開していただければと思います。
改行コードが原因でない場合はごめんなさい。