From: Toshi MARUYAMA Date: Tue, 22 Feb 2011 13:39:12 +0000 (+0000) Subject: scm: Ruby 1.9 compatibility for log. X-Git-Tag: 1.2.0~898 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9f50e6358371b60fab4245c956f02b1ae6490b56;p=redmine.git scm: Ruby 1.9 compatibility for log. Remove assuming UTF-8 is valid. "\xC2\x80" of latin-1(iso-8859-1) is valid sequence of UTF-8. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4925 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/changeset.rb b/app/models/changeset.rb index e49113ebf..d2e4a53f8 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -245,13 +245,6 @@ class Changeset < ActiveRecord::Base end def self.to_utf8(str) - if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - return str if str.valid_encoding? - else - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii - end - encoding = Setting.commit_logs_encoding.to_s.strip unless encoding.blank? || encoding == 'UTF-8' begin diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index cb4d64042..508294fea 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -221,6 +221,25 @@ class ChangesetTest < ActiveSupport::TestCase end end + def test_comments_should_be_converted_all_latin1_to_utf8 + with_settings :commit_logs_encoding => 'ISO-8859-1' do + c = Changeset.new + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + c.comments = s1 + assert_equal s2, c.comments + end + end + def test_identifier c = Changeset.find_by_revision('1') assert_equal c.revision, c.identifier