ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 12 years ago

Closed 12 years ago

#628 closed defect (fixed)

特定のファイル名でファイルダウンロード時に文字化けする場合がある

Reported by: ogawa Owned by: ogawa
Priority: major Milestone: OpenPNE2.8beta8
Component: user【ユーザー向け機能】 Version:
Keywords: Cc:

Description

http://www.openpne.jp/ticket/528 より転記。

ファイル名を「テスト用.txt」にすると、なぜだかDL時に文字化けします。(半角カナ)

Windows XP(SP2)環境で、以下のとおりになりました。

  • IE 6.0 → ○ 「テスト用.txt」
  • Firefox 2.0.0.3 → × 「ýėp.txt」
  • Opera 9.10 → × 「ýėp.txt」

Change History (16)

comment:1 Changed 12 years ago by ebihara

Owner: changed from takanashi to ebihara

確認します。

comment:2 Changed 12 years ago by ebihara

このバグは、ファイル名が「半角カナ + 全角文字」となっているとFirefox側やOpera側の文字コード変換がおそらく失敗していることによるものです。

Shift-JIS上の「テスト用」がUTF-8の「ýėp」にあたるのがこの推測の根拠です。これを裏付ける資料等については調査中です。

そもそも、IEではダウンロードするファイル名の文字コードはShift-JISにしか対応していません(ファイル名が他の文字コードだと文字化けする)。以前のOpenPNEではUTF-8でファイル名を指定していたためにIEではファイル名が文字化けしてしまっていましたが(#593)、Shift-JISにコンバートすることで対応しました(r2533)。

一方で、Firefoxではファイル名がUTF-8でなければいけないようです。ですが、現在のFirefoxの挙動を見るに、ファイル名をUTF-8へコンバートすることでこの問題を解消していると思われます。今回の現象では、このコンバートを失敗しているか、もしくは文字コード判別に失敗して、Shift-JISの「テスト用」をUTF-8だと見なしているのでしょう。

回避策としては、以下があげられるでしょうか。

  1. 半角カナを全角カナに変換してしまう
  2. ブラウザをUserAgentヘッダを見て判別し、Firefoxの場合はファイル名をShift-JISに変換せず、UTF-8のままとする

comment:3 Changed 12 years ago by ebihara

Owner: changed from ebihara to takanashi

どう対応するのが望ましいのか、ご検討いただきたいと思います。

comment:4 Changed 12 years ago by ogawa

Owner: changed from takanashi to ogawa
Status: newassigned

実装方針としては、

2. ブラウザをUserAgentヘッダを見て判別し、IEの場合はファイル名をShift_JISに変換する

の方を採用すべきだと思います。1.の対処の問題点として、以下のようなものがあります。

  • 半角カナ以外で問題が出ないという保証がない
  • そもそもSJISに変換している時点で日本語以外のファイル名が化ける(えーっと、日本語以外のIEってどうなってるんでしょう?)

ただし、2.の対処でMacのSafari等のブラウザで問題が出ないかどうかは確かめる必要があるかと思います。

comment:5 Changed 12 years ago by ogawa

Owner: changed from ogawa to ebihara
Status: assignednew

comment:6 Changed 12 years ago by ogawa

  1. ダウンロード時のファイル名は、英数字のものに置き換える(ただし、ブラウザでの表示上は元のファイル名を用いる)

という案も出ました。この仕様が許されるなら実装は楽になると思いますが、意見を聞いて検討する必要があるでしょう。

comment:7 Changed 12 years ago by ebihara

いろいろ調べてみたところ、Safariではどのような手段を用いても日本語が文字化けしてしまうようです。 http://www.tandemsite.com/blog/m_hash/archives/2005/07/post_272.html http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21865&forum=7

となると、3.の対策が一番無難なのかなぁ。どうしましょ。

comment:8 Changed 12 years ago by ogawa

Owner: changed from ebihara to kunitada

議論が必要ですね。

comment:9 Changed 12 years ago by ogawa

Milestone: OpenPNE2.8beta6OpenPNE2.8beta7

beta7 へ持ち越します。

comment:10 Changed 12 years ago by kunitada

Owner: changed from kunitada to ogawa
Priority: minormajor
エンジンでは半角カタカナでも正常にダウンロードできますね。
Win:Opera9.20
Mac:Safari1.0.3
にて、
http://www.enzin.net/item/25923
のテスト.pppをダウンロードできた。

OpenPNE2.8beta6ではどちらも文字化けした。

他のWEBアプリで実現できてるので、
方法はあると思います。

comment:11 Changed 12 years ago by maruyama

日本語ファイルが使える縁人とOpenPNEでのファイルダウンロードのヘッダの違いを調査してみました。 OpenPNEでは content-disposition: attachment ; filename="日本語ファイル.txt"

のヘッダによってファイル名を指定しているのですが、縁人ではこのヘッダは使 わず、リンク先を直接

http://www.enzin.net/file/6456/日本語ファイル.txt

のように直接ファイルに対するURLを張ることによって日本語ファイル名を指定 しているようです。

comment:12 Changed 12 years ago by kunitada

Priority: majorblocker
↓の対策が良いと思うので、
「ローカルファイル名でダウンロード」する
でGO。

■コミュニティで議論した場所は下記。
http://openpne.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=1933


>>
「2. ブラウザをUserAgentヘッダを見て判別し、IEの場合はファイル名をShift_JISに変換する」
【結果】
ie,firefox,operaなど主要ブラウザは全OK。
safariのみ無理。

現状、
「ローカルファイル名でダウンロード」するなら、
これが最善かと思われる。
<<

comment:13 Changed 12 years ago by ogawa

Milestone: OpenPNE2.8beta7OpenPNE2.8beta8

comment:14 Changed 12 years ago by ogawa

Priority: blockermajor
Status: newassigned

comment:15 Changed 12 years ago by ogawa

「2. ブラウザをUserAgentヘッダを見て判別し、IEの場合はファイル名をShift_JISに変換する」

この対応をおこないました。

comment:16 Changed 12 years ago by ogawa

Resolution: fixed
Status: assignedclosed

WindowsXP SP2環境で、

  • IE 6.0 → ○ 「テスト用.txt」
  • Firefox 2.0.0.3 → ○ 「テスト用.txt」
  • Opera 9.10 → ○ 「テスト用.txt」

となりました。その他の環境では未確認。

Note: See TracTickets for help on using tickets.