- - PR -
ダウンロードデータの文字化け
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-23 17:22
いつもお世話になっております。
現在作成しているファイルダウンロード機能で文字化けが起こって困っています。 ある一定容量(おそらく10MBぐらい)を越えたデータをダウンロードしようとすると、 文字化けが起こります。それより小さなデータでは文字化けは起こりません。 どんな理由が考えられると思いますか?よろしくお願いします。 補足 ダウンロードファイルは実体ではなく、HTMLに組み込み 環境:WEBサーバ兼APサーバ(Weblogic6.1(Windows)) Cliant(IE) |
|
投稿日時: 2004-08-23 17:51
KOXさん、こんにちは。
もしかしてバグ? InputStream#read(buffer, 0, length)したときの 戻り値を無視して、単純に length分をコピー出力したとか? |
|
投稿日時: 2004-08-23 19:05
早速の返信ありがとうございます。
バグはバグなのだと思います。 ただ、ご指摘された内容ではないみたいです。 (私も人のPGを解析しているので時間がかかり確定ではないのですが。) また、初めに書いておくべきでしたが、この現象は LAN環境では起こりません。インターネットを介した場合に起こります。 |
|
投稿日時: 2004-08-23 20:26
TCPなら途中経路によほど変な GateWayでも入って無い限り、
データ自身が網の違いで化けるのは無いと思います。 時間の影響ならあるかも知れません。 たとえば、Socketの timeoutが設定してあり、timeoutで 抜けて来時もバッファをコピーしてしまったとかは考え られないでしょうか? 先の、lengthも一応ソース確認した方が良いかも。 難しいですね。 |
|
投稿日時: 2004-08-24 16:27
Socketの timeoutの可能性はありそうですね。
どこで設定しているかわからないので、調べるのはそこからですね。 ご指南ありがとうございました。 ちなみにreadを使用している箇所はこんな感じでしたので 問題ないと思うのですが・・・ while( (c = in.read()) != -1 ){ out.write( c ); } |
|
投稿日時: 2004-08-25 06:57
KOXさん、了解しました。データ長の問題はありませんね。
1バイトずつ処理しているようですから。 (でもこれでは遅過ぎませんか?) timeout以外も考えてみます。 |
|
投稿日時: 2004-08-25 09:50
インターネットからのときだけ文字化けってのが妙ですね。
"ダウンロードファイルは実体ではなく、HTMLに組み込み"ってのはどういう意味ですか?サーブレットで出力している、という意味でしょうか? 最新のサービスパック(SP6)をあてても再現するようならサポート窓口に問い合わせてみてはいかがでしょうか? http://commerce.bea.com/showallversions.jsp?family=WLSJ21213 |
|
投稿日時: 2004-08-25 17:37
Socketタイムアウトは明示的には行なっていませんでした。
ただデータが大きく時間がかかるダウンロードなので、 タイムアウト関連の可能性は残っていると思いますので、 他の線をあたってみます。 HTML組み込みと書いたのは、そのとおりで 実際にダウンロードファイルを作成しているわけではなく、 サーブレットでダウンロードデータを作成して出力しています。 SP3を使用していてSP6はあてていないのですが、必ず直るという確証がなければ あてられないのが実状です。本番にUPしないと確認が取れないため、難しいですね。 サポート問合せはしているのですが、期待の回答がなく待ち状態のため書き込んでいます。 |
