SVNリポジトリで日本語

150 views
Skip to first unread message

Kyosuke Takayama

unread,
May 12, 2007, 2:10:44 AM5/12/07
to redmine-...@googlegroups.com
リポジトリブラウザで diff を見るときに、EUC とか SJIS な部分が文字化け
してしまうので、NKF で UTF8 に変換してから表示されるようにしてみました。

Index: app/models/svn_repos.rb
===================================================================
--- app/models/svn_repos.rb (リビジョン 528)
+++ app/models/svn_repos.rb (作業コピー)
@@ -303,6 +303,7 @@

class DiffTableList < Array

+ require 'nkf'
def initialize (diff, type="inline")
diff_table = DiffTable.new type
diff.each do |line|
@@ -310,7 +311,7 @@
self << diff_table if diff_table.length > 1
diff_table = DiffTable.new type
end
- a = diff_table.add_line line
+ a = diff_table.add_line(NKF.nkf('-w', line))
end
self << diff_table
end


1行ずつ変換してるから、精度は悪そうですが…。
diff の結果は tmp/cache/repositories にキャッシュされるので、表示速度
の変化はあまり気にならないです。

はたして diff の文字コードをいじるのが良いのか悪いのかわからないので、
オフィシャルへはフィードバックしていません。英語の、壁もあるんで。汗

Chris

unread,
May 13, 2007, 9:05:41 AM5/13/07
to redMine Users (japanese)

お、これは便利そうですね。

リポジトリブラウザでの文字化けは Trac でも経験していて
何とかならないかなぁと思っていました。

> 英語の、壁もあるんで。汗

是非チャレンジしてみては?


On 5月12日, 午後3:10, Kyosuke Takayama <supp...@mc.neweb.ne.jp> wrote:
> リポジトリブラウザで diff を見るときに、EUC とか SJIS な部分が文字化け
> してしまうので、NKF で UTF8 に変換してから表示されるようにしてみました。
>
> Index: app/models/svn_repos.rb
> ===================================================================
> --- app/models/svn_repos.rb (リビジョン 528)
> +++ app/models/svn_repos.rb (作業コピー)
> @@ -303,6 +303,7 @@
>
> class DiffTableList < Array
>
> + require 'nkf'
> def initialize (diff, type="inline")
> diff_table = DiffTable.new type
> diff.each do |line|
> @@ -310,7 +311,7 @@
> self << diff_table if diff_table.length > 1
> diff_table = DiffTable.new type
> end
> - a = diff_table.add_line line
> + a = diff_table.add_line(NKF.nkf('-w', line))
> end
> self << diff_table
> end
>

> 1行ずつ変換してるから、精度は悪そうですが...。

Kyosuke Takayama

unread,
May 13, 2007, 11:12:58 AM5/13/07
to redmine-...@googlegroups.com
r521からリポジトリブラウザで一部のファイルの中身が見れるようになったの
で、そこもnkfで変換するようにしました。 ブラウザ上で中身は見れるのはや
っぱり快適ですね。

Index: app/models/svn_repos.rb
===================================================================
--- app/models/svn_repos.rb (リビジョン 528)
+++ app/models/svn_repos.rb (作業コピー)

@@ -17,6 +17,7 @@

require 'rexml/document'
require 'cgi'
+require 'nkf'

module SvnRepos

@@ -178,7 +179,7 @@
cat = io.read
end
return nil if $? && $?.exitstatus != 0
- cat
+ NKF.nkf('-w', cat)
rescue Errno::ENOENT => e
raise CommandFailed
end


@@ -310,7 +311,7 @@
self << diff_table if diff_table.length > 1
diff_table = DiffTable.new type
end
- a = diff_table.add_line line
+ a = diff_table.add_line(NKF.nkf('-w', line))
end
self << diff_table
end


>> 英語の、壁もあるんで。汗
> 是非チャレンジしてみては?

いやあ、文字まわりは伝えるのが大変そうで。
とりあえず、上のパッチをもうちょっと使ってから、交渉してみようと思います。

Reply all
Reply to author
Forward
0 new messages