Redmine のレポジトリビューアで、日本語が含まれているテキストファイルを「見る」とダウンロードになってしまいます。
どうやら、非ASCII文字が30%以上あるとバイナリとみなしてしまうようです。
次のように修正したらちゃんと表示されました。
--- repositories_controller.rb.orig 2010-04-17 21:51:46.000000000 +0900 +++ repositories_controller.rb 2010-09-15 06:48:44.000000000 +0900 @@ -18,6 +18,7 @@ require 'SVG/Graph/Bar' require 'SVG/Graph/BarHorizontal' require 'digest/sha1' +require 'iconv' class ChangesetNotFound < Exception; end class InvalidRevisionParam < Exception; end @@ -121,7 +122,7 @@ @content = @repository.cat(@path, @rev) (show_error_not_found; return) unless @content - if 'raw' == params[:format] || @content.is_binary_data? || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) + if 'raw' == params[:format] || is_binary?(@content) || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) # Force the download send_data @content, :filename => @path.split('/').last else @@ -303,6 +304,16 @@ graph.burn end + def is_binary?(data) + return true if data =~ /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/n + begin + Iconv.iconv('utf-8', 'utf-8', data) + return false + rescue + return true + end + end + end class Date