scm: replace invalid utf-8 sequences instead of stripping in displaying repository contents on Ruby 1.8.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5427 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA committed 2011-04-12 05:03:59 +00:00
1 parent 62952a9885
commit bb48d96d30
2 files changed
+11 -7

No files matched your search

+10 -4
View File
@@ -156,12 +156,18 @@ module RepositoriesHelper
:undef => :replace, :replace => '?').encode("UTF-8")
end
else
# removes invalid UTF8 sequences
ic = Iconv.new('UTF-8', 'UTF-8')
txtar = ""
begin
str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
rescue Iconv::InvalidEncoding
# "UTF-8//IGNORE" is not supported on some OS
txtar += ic.iconv(str)
rescue Iconv::IllegalSequence
txtar += $!.success
str = '?' + $!.failed[1,$!.failed.length]
retry
rescue
txtar += $!.success
end
str = txtar
end
str
end