- PR -

ダウンロードデータの文字化け

投稿者投稿内容
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2004-08-23 17:22
いつもお世話になっております。
現在作成しているファイルダウンロード機能で文字化けが起こって困っています。
ある一定容量(おそらく10MBぐらい)を越えたデータをダウンロードしようとすると、
文字化けが起こります。それより小さなデータでは文字化けは起こりません。
どんな理由が考えられると思いますか?よろしくお願いします。

補足
ダウンロードファイルは実体ではなく、HTMLに組み込み
環境:WEBサーバ兼APサーバ(Weblogic6.1(Windows))
   Cliant(IE)


Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-08-23 17:51
KOXさん、こんにちは。

もしかしてバグ?

InputStream#read(buffer, 0, length)したときの
戻り値を無視して、単純に length分をコピー出力したとか?
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2004-08-23 19:05
早速の返信ありがとうございます。
バグはバグなのだと思います。
ただ、ご指摘された内容ではないみたいです。
(私も人のPGを解析しているので時間がかかり確定ではないのですが。)

また、初めに書いておくべきでしたが、この現象は
LAN環境では起こりません。インターネットを介した場合に起こります。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-08-23 20:26
TCPなら途中経路によほど変な GateWayでも入って無い限り、
データ自身が網の違いで化けるのは無いと思います。

時間の影響ならあるかも知れません。

たとえば、Socketの timeoutが設定してあり、timeoutで
抜けて来時もバッファをコピーしてしまったとかは考え
られないでしょうか?

先の、lengthも一応ソース確認した方が良いかも。

難しいですね。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2004-08-24 16:27
Socketの timeoutの可能性はありそうですね。
どこで設定しているかわからないので、調べるのはそこからですね。
ご指南ありがとうございました。

ちなみにreadを使用している箇所はこんな感じでしたので
問題ないと思うのですが・・・
while( (c = in.read()) != -1 ){
out.write( c );
}
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-08-25 06:57
KOXさん、了解しました。データ長の問題はありませんね。
1バイトずつ処理しているようですから。
(でもこれでは遅過ぎませんか?)

timeout以外も考えてみます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-08-25 09:50
インターネットからのときだけ文字化けってのが妙ですね。
"ダウンロードファイルは実体ではなく、HTMLに組み込み"ってのはどういう意味ですか?サーブレットで出力している、という意味でしょうか?

最新のサービスパック(SP6)をあてても再現するようならサポート窓口に問い合わせてみてはいかがでしょうか?
http://commerce.bea.com/showallversions.jsp?family=WLSJ21213
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2004-08-25 17:37
Socketタイムアウトは明示的には行なっていませんでした。
ただデータが大きく時間がかかるダウンロードなので、
タイムアウト関連の可能性は残っていると思いますので、
他の線をあたってみます。

HTML組み込みと書いたのは、そのとおりで
実際にダウンロードファイルを作成しているわけではなく、
サーブレットでダウンロードデータを作成して出力しています。
SP3を使用していてSP6はあてていないのですが、必ず直るという確証がなければ
あてられないのが実状です。本番にUPしないと確認が取れないため、難しいですね。
サポート問合せはしているのですが、期待の回答がなく待ち状態のため書き込んでいます。

スキルアップ/キャリアアップ(JOB@IT)