From 9888b93fddf75d83673ef03db4e87a8d01c92f19 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sat, 19 Mar 2011 05:46:25 +0000 Subject: [PATCH] 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 --- app/helpers/repositories_helper.rb | 12 +++++++++++- test/unit/helpers/repository_helper_test.rb | 18 +++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index c6727ae2..4f76c22a 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -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) diff --git a/test/unit/helpers/repository_helper_test.rb b/test/unit/helpers/repository_helper_test.rb index c5e66055..42b087ce 100644 --- a/test/unit/helpers/repository_helper_test.rb +++ b/test/unit/helpers/repository_helper_test.rb @@ -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