redMineの文書でファイルをダウンロードするとファイル名が文字化けしてしまいます。
ファイル名:
英数字 → 文字化けなし
2バイト文字 → 文字化けあり
上記問題解決方法はあるのでしょうか?
【環境】
OS:WindowsXP pro SP2
mysql :Ver 14.12 Distrib 5.0.45, for Win32
ruby:1.8.6
Subversion:バージョン 1.4.5
redMine:0.5.1
宜しくお願い致します。
IEを使ってたりしませんか?
手元で試したところIE6ではNG(UTF-8のままで保存しようとする?)
FireFox 2.0.0.7ではOKでしたので。
On 10月10日, 午後6:51, Armadillo <Armadillo1...@gmail.com> wrote:
> 手元で試したところIE6ではNG(UTF-8のままで保存しようとする?)
> FireFox 2.0.0.7ではOKでしたので。
確認したところそのようですね。
RAILS_ROOT/files にはutf-8で書かれてるようです。
もしWindows(とIE)だけで使うならこんなパッチで強制SJIS変換してもいいのかも。
Index: app/controllers/versions_controller.rb
===================================================================
--- app/controllers/versions_controller.rb (リビジョン 817)
+++ app/controllers/versions_controller.rb (作業コピー)
@@ -39,7 +39,7 @@
def download
@attachment = @version.attachments.find(params[:attachment_id])
@attachment.increment_download
- send_file @attachment.diskfile, :filename => @attachment.filename
+ send_file @attachment.diskfile, :filename =>
@attachment.filename.tosjis
rescue
render_404
end
では。
> > FireFox 2.0.0.7ではOKでしたので。
上記で試したところ私の環境でもOKでした。
しかし私は、通常IE7を使用していますので、
下記方法も実行しましたがこちらでは文字化けのままでした。
> - send_file @attachment.diskfile, :filename => @attachment.filename
> + send_file @attachment.diskfile, :filename =>
> @attachment.filename.tosjis
IE6でないと強制SJIS変換は無理なのでしょうか?
私は、IE7で文字化けの問題解消を行いたいですが無理なのでしょうか?
以上です。
文字化けの件は、下記のファイルを変更で回避する事が出来ました。
Index: app/controllers/documents_controller.rb
> - send_file @attachment.diskfile, :filename => @attachment.filename
> + send_file @attachment.diskfile, :filename =>
> @attachment.filename.tosjis
以上、ありがとうございました。
> > では。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
>Index: app/controllers/documents_controller.rb
そっちか!と思ったら、
> redMineの文書...
一番最初のメールを見落としていましたね...orz
どうもすみませんでした。
私が書いたパッチはredmineの "ファイル" のファイル名対策ですね。
しょんぼり。
#あ、ちなみに私もIE7使ってます。
では。
基本的にIEが悪い(RFC準拠じゃない)はずなので、やるべきではないなぁとは思うのですが、あえて直すなら
- send_file @attachment.diskfile, :filename =>
@attachment.filename
+ send_file @attachment.diskfile, :filename => /MSIE/ =~
request.env['HTTP_USER_AGENT'] ? CGI.escape(@attachment.filename) :
@attachment.filename
とかですかね。
ブラウザ毎に挙動を変えるしか無いようなので。
ちなみに、send_fileでgrepすれば判ります
が、document_controller.rb,versions_copntroller.rb,attachiments_controller.rb
にそれぞれありますので、
対応するならそれら全部にやっておくのが良いと思います。
一応WindowsXP SP2上で、IE6とFirefox2.0.0.7とで、ファイルと文書とwikiの送付ファイル(txt)で動作確認をして
います。
適切な解決方法で問題解決しましたので再度まとめたいと思います。
【問題】
IE使用時にはファイル名が2バイト文字の場合文字化けを起こす。
※Firefox2.0.0.7では問題が起こらない
【影響範囲】
redMineの「文書」、「ファイル」、「Wiki」項目
【項目関係ファイル】
<app/controllers/>配下ファイル
「文書」: document_controller.rb
「ファイル」: versions_copntroller.rb
「Wiki」: attachiments_controller.rb
【解決方法】
・send_file @attachment.diskfile, :filename =>
@attachment.filename.tosjis
or
・send_file @attachment.diskfile, :filename => /MSIE/ =~
request.env['HTTP_USER_AGENT'] ?
CGI.escape(@attachment.filename) :@attachment.filename
以上ありがとうございました。