scm: not use Iconv for log converting in Ruby 1.9 and fix tests fails in Ruby 1.9.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5367 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
7eb98dbd34
commit
81bdbd77f7
|
@ -239,21 +239,28 @@ class Changeset < ActiveRecord::Base
|
|||
private
|
||||
|
||||
def self.to_utf8(str, encoding)
|
||||
return str if str.blank?
|
||||
unless encoding.blank? || encoding == 'UTF-8'
|
||||
begin
|
||||
str = Iconv.conv('UTF-8', encoding, str)
|
||||
rescue Iconv::Failure
|
||||
# do nothing here
|
||||
end
|
||||
end
|
||||
return str if str.nil?
|
||||
str.force_encoding("ASCII-8BIT") if str.respond_to?(:force_encoding)
|
||||
return str if str.empty?
|
||||
str.force_encoding("UTF-8") if str.respond_to?(:force_encoding)
|
||||
if str.respond_to?(:force_encoding)
|
||||
str.force_encoding('UTF-8')
|
||||
enc = encoding.blank? ? "UTF-8" : encoding
|
||||
if enc != "UTF-8"
|
||||
str.force_encoding(enc)
|
||||
str = str.encode("UTF-8")
|
||||
end
|
||||
if ! str.valid_encoding?
|
||||
str = str.encode("US-ASCII", :invalid => :replace,
|
||||
:undef => :replace, :replace => '?').encode("UTF-8")
|
||||
end
|
||||
else
|
||||
unless encoding.blank? || encoding == 'UTF-8'
|
||||
begin
|
||||
str = Iconv.conv('UTF-8', encoding, str)
|
||||
rescue Iconv::Failure
|
||||
# do nothing here
|
||||
end
|
||||
end
|
||||
# removes invalid UTF8 sequences
|
||||
begin
|
||||
str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
|
||||
|
|
|
@ -258,9 +258,9 @@ class ChangesetTest < ActiveSupport::TestCase
|
|||
def test_comments_should_be_converted_all_latin1_to_utf8
|
||||
s1 = "\xC2\x80"
|
||||
s2 = "\xc3\x82\xc2\x80"
|
||||
s4 = s2.dup
|
||||
if s1.respond_to?(:force_encoding)
|
||||
s3 = s1.dup
|
||||
s4 = s2.dup
|
||||
s1.force_encoding('ASCII-8BIT')
|
||||
s2.force_encoding('ASCII-8BIT')
|
||||
s3.force_encoding('ISO-8859-1')
|
||||
|
@ -278,7 +278,7 @@ class ChangesetTest < ActiveSupport::TestCase
|
|||
:scmid => '12345',
|
||||
:comments => s1)
|
||||
assert( c.save )
|
||||
assert_equal s2, c.comments
|
||||
assert_equal s4, c.comments
|
||||
end
|
||||
|
||||
def test_identifier
|
||||
|
|
Loading…
Reference in New Issue