converter_not_found2.patch

Karel Pičman, 2020-09-17 14:37

Download (2.78 KB)

View differences:

lib/redmine/codeset_util.rb (working copy)
23 23
      end
24 24
      enc = encoding.blank? ? "UTF-8" : encoding
25 25
      if enc.casecmp("UTF-8") != 0
26
        str.force_encoding(enc)
27
        str = str.encode("UTF-8", :invalid => :replace,
26
        begin
27
          str.force_encoding(enc)
28
          str = str.encode("UTF-8", :invalid => :replace,
28 29
              :undef => :replace, :replace => '?')
30
        rescue Encoding::ConverterNotFoundError
31
          Rails.logger.warn ">>> ConverterNotFoundError (#{enc} to UTF-8)"
32
          str = replace_invalid_utf8(str)
33
        end
29 34
      else
30 35
        str = replace_invalid_utf8(str)
31 36
      end
test/fixtures/mail_handler/body_windows-1258.eml (working copy)
1
From: John Smith <JSmith@somenet.foo>
2
To: "redmine@somenet.foo" <redmine@somenet.foo>
3
Subject: This is a Vietnamiese test
4
Content-Type: multipart/alternative;
5
  boundary="_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_"
6

  
7
--_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_
8
Content-Type: text/plain; charset="windows-1258"
9
Content-Transfer-Encoding: quoted-printable
10

  
11
không hợp lệ
12

  
13
--_c20d9cfa-d16a-43a3-a7e5-71da7877ab23_--
14

  
test/unit/lib/redmine/codeset_util_test.rb (working copy)
101 101
    assert_equal "UTF-8", s2.encoding.to_s
102 102
    assert_equal 'こんにち?', s2
103 103
  end
104

  
105
  test "#to_utf8 should support not supported code page" do
106
    s1 = (+'không hợp lệ').force_encoding('Windows-1258')
107
    s2 = Redmine::CodesetUtil.to_utf8(s1, 'Windows-1258')
108
    assert s2.valid_encoding?
109
    assert_equal 'UTF-8', s2.encoding.to_s
110
    assert_equal 'không hợp lệ', s2
111
  end
104 112
end
test/unit/mail_handler_test.rb (working copy)
747 747
    assert_equal '고맙습니다.', issue.description
748 748
  end
749 749

  
750
  def test_add_issue_with_vietnamiese_body
751
    issue = submit_email(
752
        'body_windows-1258.eml',
753
        issue: { project: 'ecookbook' }
754
    )
755
    assert_kind_of Issue, issue
756
    assert issue.description.include?('không hợp lệ')
757
  end
758

  
750 759
  def test_add_issue_with_no_subject_header
751 760
    with_settings :default_language => 'en' do
752 761
      issue = submit_email(