scm: to_utf8() in repositories_helper always returns UTF-8 in Ruby 1.9.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5165 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-03-19 05:46:25 +00:00
parent a9d089dbcb
commit e6e4256ee4
2 changed files with 28 additions and 2 deletions

View File

@ -117,7 +117,16 @@ module RepositoriesHelper
end
def to_utf8(str)
return str if str.nil?
return str if str.nil?
str = to_utf8_internal(str)
if str.respond_to?(:force_encoding)
str.force_encoding('UTF-8')
end
str
end
def to_utf8_internal(str)
return str if str.nil?
if str.respond_to?(:force_encoding)
str.force_encoding('ASCII-8BIT')
end
@ -136,6 +145,7 @@ module RepositoriesHelper
end
str = replace_invalid_utf8(str)
end
private :to_utf8_internal
def replace_invalid_utf8(str)
if str.respond_to?(:force_encoding)

View File

@ -69,5 +69,21 @@ class RepositoryHelperTest < HelperTestCase
assert_equal "", to_utf8("")
assert_equal nil, to_utf8(nil)
end
end
def test_to_utf8_returns_ascii_as_utf8
s1 = "ASCII"
s2 = s1.dup
if s1.respond_to?(:force_encoding)
s1.force_encoding("UTF-8")
s2.force_encoding("ISO-8859-1")
end
str1 = to_utf8(s1)
str2 = to_utf8(s2)
assert_equal s1, str1
assert_equal s1, str2
if s1.respond_to?(:force_encoding)
assert_equal "UTF-8", str1.encoding.to_s
assert_equal "UTF-8", str2.encoding.to_s
end
end
end