ファイル名が文字化け

1,321 views
Skip to first unread message

NSR250

unread,
Oct 10, 2007, 1:28:15 AM10/10/07
to redMine Users (japanese)
はじめまして。

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

宜しくお願い致します。

Armadillo

unread,
Oct 10, 2007, 5:51:43 AM10/10/07
to redMine Users (japanese)
Armadilloです。

IEを使ってたりしませんか?

手元で試したところIE6ではNG(UTF-8のままで保存しようとする?)
FireFox 2.0.0.7ではOKでしたので。

fmkt

unread,
Oct 10, 2007, 6:38:37 AM10/10/07
to redMine Users (japanese)
こんばんわ

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

では。

NSR250

unread,
Oct 11, 2007, 3:07:29 AM10/11/07
to redMine Users (japanese)
Armadillo殿、fmkt殿
返信ありがとうございます。

> > 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で文字化けの問題解消を行いたいですが無理なのでしょうか?

以上です。

NSR250

unread,
Oct 11, 2007, 3:52:01 AM10/11/07
to redMine Users (japanese)
自己返信です。

文字化けの件は、下記のファイルを変更で回避する事が出来ました。
Index: app/controllers/documents_controller.rb

> - send_file @attachment.diskfile, :filename => @attachment.filename
> + send_file @attachment.diskfile, :filename =>
> @attachment.filename.tosjis

以上、ありがとうございました。

> > では。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

fmkt

unread,
Oct 11, 2007, 3:59:26 AM10/11/07
to redMine Users (japanese)
こんにちは。

>Index: app/controllers/documents_controller.rb

そっちか!と思ったら、

> redMineの文書...

一番最初のメールを見落としていましたね...orz

どうもすみませんでした。

私が書いたパッチはredmineの "ファイル" のファイル名対策ですね。

しょんぼり。

#あ、ちなみに私もIE7使ってます。

では。

Armadillo

unread,
Oct 11, 2007, 5:17:37 AM10/11/07
to redMine Users (japanese)
Armadilloです。

基本的に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)で動作確認をして
います。

NSR250

unread,
Oct 12, 2007, 5:24:50 AM10/12/07
to redMine Users (japanese)

fmkt殿、Armadillo殿
返信ありがとうございます。

適切な解決方法で問題解決しましたので再度まとめたいと思います。

【問題】
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

以上ありがとうございました。

Reply all
Reply to author
Forward
0 new messages