URLDownloadToFileで改行コードの文字化け無しにするには?

解決


うっち  2004-05-29 07:51:19  No: 113574

(1)Windowsマシンの NotePad で作成した2行からなるテキストファイルを
   WEBサーバにFTPソフトでアップロード。
(2)そのファイルをVBプログラムの URLDownloadToFile でダウンロード。
(3)つづいて、Line Input で一行ずつ処理しようとしたところ、
   2行のはずが、改行コードが”↑”のような文字に化けたため、
   1行で読み込まれてしまいました。

・ファイル自体はダウンロードされるます。
・また、そのファイルを WordPad で開くときちんと2行で表示されます。
・が、NotePad で開くと、改行コードが文字化けして1行で表示されます。

よろしくお願いします。


魔界の仮面弁士  2004-05-29 08:19:58  No: 113575

アップロード時に化けたのか、ダウンロード時に化けたのかを確認する必要がありますね。

FTPでアップロードする際、バイナリモードで送信していますか?
それとも、アスキーモードで送信していますか?

また、テキストファイル以外(例えば、exeなどのバイナリファイル)を
ダウンロードした場合も、データが化けるのでしょうか?

> が、NotePad で開くと、改行コードが文字化けして1行で表示されます。
『“↑”のような文字』との事ですが、具体的には、何に化けているのでしょうか?
ダウンロードしたファイルの改行コードをバイナリエディタ等で調べみてください。


うっち  2004-05-29 17:09:07  No: 113576

魔界の仮面弁士  さん、ご返信ありがとうございました。

バイナリモードでFTPでアップロードし、ダウンロード後のファイルを
バイナリエディタで確認しました。

送信前の改行コードは  "0D 0A" (HEX) で、
ダウンロード後 は"0A" (HEX) だけになっていました。
"0D" (HEX) が抜け落ちたかたちです。

テキスト以外のバイナリファイルは未確認です。

関係ないかもしれませんが、ひとつ気になることがあります。
インターネットトランスファコントロールの OpenURL メソッド
で  ダウンロードする処理についてですが、
同じプログラムなのに、会社で実行するのと自宅で実行するのとでは
結果が異なります。
会社で実行すると、目的のファイルが完全にダウンロードできるのに、
自宅だと途中まで、具体的には全体で30KBのファイルなのですが、
4KBまでしかダウンロードされません。

(このため、別の方法として  URLDownloadToFile を使いはじめました。)

ちなみに、ISPは  CATV  です。
HTTPプロトコルを使用している以上、ISPは関係ないのかなと
思いますが、原因が不明のため気になります。


うっち  2004-05-29 17:21:13  No: 113577

<情報を追加>

0x0A は UNIX での改行コードなのですね。

FTPソフトで、バイナリ指定で当該ファイルをダウンロードして、
バイナリエディタで改行コードを確認したところ、
きちんと 0x0D0A でした。

どうやら  ダウンロード時に化けたもののようです。


うっち  2004-05-31 01:27:50  No: 113578

<解決>

なぜか、再度試したところ正常な内容でダウンロードできるように
なりました。

確実な原因は不明ですが、
きっと、SJISコードのファイルをサーバにアップロードするとき、
バイナリ指定を忘れたのだと思います。

バイナリ指定を指摘されたあとに実行したとき(返信の2番目)は
不正な内容でしたが、これはキャッシュの古いファイルが読み込まれ
たのではないかと思っています。

きちんとバイナリでサーバへアップロードすれば問題ないようです。

お騒がせいたしました。
魔界の仮面弁士さん、返信くださりありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加