# Redmine - project management software
-# Copyright (C) 2006-2008 Jean-Philippe Lang
+# Copyright (C) 2006-2010 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
super
end
+ def committer=(arg)
+ write_attribute(:committer, self.class.to_utf8(arg.to_s))
+ end
+
def project
repository.project
end
encoding = Setting.commit_logs_encoding.to_s.strip
unless encoding.blank? || encoding == 'UTF-8'
begin
- return Iconv.conv('UTF-8', encoding, str)
+ str = Iconv.conv('UTF-8', encoding, str)
rescue Iconv::Failure
# do nothing here
end
end
- str
+ # removes invalid UTF8 sequences
+ Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
end
end
-# redMine - project management software
-# Copyright (C) 2006-2007 Jean-Philippe Lang
+# encoding: utf-8
+#
+# Redmine - project management software
+# Copyright (C) 2006-2010 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
changeset = Changeset.find_by_revision('10')
assert_nil changeset.next
end
+
+ def test_comments_should_be_converted_to_utf8
+ with_settings :commit_logs_encoding => 'ISO-8859-1' do
+ c = Changeset.new
+ c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ assert_equal "Texte encodé en ISO-8859-1.", c.comments
+ end
+ end
+
+ def test_invalid_utf8_sequences_in_comments_should_be_stripped
+ c = Changeset.new
+ c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt")
+ assert_equal "Texte encod en ISO-8859-1.", c.comments
+ end
end