diff --git a/test/unit/lib/redmine/codeset_util_test.rb b/test/unit/lib/redmine/codeset_util_test.rb index 5c88e0f75..35ab0088d 100644 --- a/test/unit/lib/redmine/codeset_util_test.rb +++ b/test/unit/lib/redmine/codeset_util_test.rb @@ -85,4 +85,20 @@ class Redmine::CodesetUtilTest < ActiveSupport::TestCase assert_equal "test??test??", str end end + + test "#replace_invalid_utf8 should replace invalid utf8" do + s1 = "\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xE3\x81\xFF".force_encoding("UTF-8") + s2 = Redmine::CodesetUtil.replace_invalid_utf8(s1) + assert s2.valid_encoding? + assert_equal "UTF-8", s2.encoding.to_s + assert_equal "??????", s2 + end + + test "#to_utf8 should replace invalid non utf8" do + s1 = "\xa4\xb3\xa4\xf3\xa4\xcb\xa4\xc1\xa4".force_encoding("EUC-JP") + s2 = Redmine::CodesetUtil.to_utf8(s1, "EUC-JP") + assert s2.valid_encoding? + assert_equal "UTF-8", s2.encoding.to_s + assert_equal "\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1?".force_encoding("UTF-8"), s2 + end end