QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

ファイルダウンロード時の文字化けについて

こんにちは。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1299&forum=7
上記のスレッドを参考ににダウンロードダイアログを使った
ファイルダウンロードを実装したところ、ダウンロードダイアログ
内の漢字かな文字は正しく表示されたのですが、ダウンロードダイヤログから
「開く」を選択した場合、やはりファイル名が文字化けします。
どなたかご指導お願いします・・・。

開発環境はASP.NET、C#、.NET Framework1.0です。
よろしくお願いします。

質問者:どら吉

回答

まったく同じ事で悩んでいます。

ダウンロードファイルがエクセルで且つ、ブラウザに表示する場合であれば、
解決されているようですが。。↓

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4531&forum=7

自分の場合、ダウンロードするファイルはエクセルに限らず、
どの様な種類のファイルであれダウンロードする必要があります。
また、ダウンロードダイアログで「開く」が選択された場合、
ブラウザに表示するのではなく、該当アプリが起動されるようにしてます。

この問題は回避できないのでしょうか。。

投稿者:しらとら

編集 履歴 (0)

なんか、IE6.0SP2(WinXp SP2版のIE)でまた、このあたりの挙動が変わっています。

web.config のglobalizationでエンコーディングに何が指定されていようと、ダウンロードさせるファイル名のURLエンコードは、utf-8でないと化けてしまうようです。

これは、
Content-Disposition=attachment
の場合だけでなく、

の場合も同様でした。

※なお、「保存」ではなく「開く」を実行したときの問題は相変わらずです。

IE6.0SP1までは基本的に、web.config のglobalizationで指定されたエンコーディングでファイル名をエンコードしないと「名前を付けて保存」ダイアログで化けてしまうので、shift_jis等を指定する場合にはクライアントの判定が必要になるかも知れません...。

【追記】
大事な事を忘れていました。
上記、SP1以前の動作に関する記述は、「常にUTF-8として URL を送信する」のチェックがはずれている場合の話でした。

で、SP2の場合、この項目の設定にかかわらず、utf-8 以外のURLエンコードでは文字化けを起こしてしまいます。

[ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-08-13 17:44 ]

投稿者:きくちゃん

編集 履歴 (0)

まったく同じ事で悩んでいます。

また、関連した問題があり、
全角文字を含むファイル名をUTF-8にエンコードした際、
ローカルにキャッシュされたファイル名が約250バイト以上になってしまうと
ファイル自体を開くことができません。

http://support.microsoft.com/default.aspx?scid=kb;ja;436616
http://support.microsoft.com/default.aspx?scid=kb;JA;416351
http://support.microsoft.com/default.aspx?scid=kb;JA;416352
http://support.microsoft.com/default.aspx?scid=kb;JA;276436

UTF-8は全角1文字を3バイトでエンコードするため、
Win2000では↓大抵こんな場所にキャッシュされるため、長いとあふれちゃいます。
C:\Documents and Settings\administrator\Local Settings\Temporary Internet Files\Content.IE5\aaaaaaaa\%ef%[0].txt

全角ファイル名等をチェックで規制する方法がもっとも安易な手段ですが、
ユーザに負担をかけてしまうことになるので出来れば避けたいです。

これらの解決or効果的な回避策を実現していらっしゃる方がおられましたら、
情報をお願いいたします。
同じ記事が記載されているリンク等でも歓迎です。

投稿者:ロンロン

編集 履歴 (0)

まったくおなじことで悩んでいるAOPPです。

確かに、ダウンロードダイアログは、全角が正しく表示されす。
”保存”のファイル名も全角が正しく表示されす。
”開く”を選択された場合に、ファイルが化けているというより
URLEncodeされた”%e9%9d%92%e6%9c%a8(3).xls”な感じになりますね!!

ちなみにハイパーリンクは問題ないです。(IE内で表示されているからでしょうか???)
URLDecodeが出来てないような(エクセルで試しています。)

成功している方、”開く”も成功したのでしょうか教えてください。

投稿者:AOPP

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。