PDF: replace all non ASCII characters to '?' if Iconv error raise in JRuby (#8569, #61).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6024 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-06-09 03:41:26 +00:00
parent 2c803670d8
commit b85092c702
2 changed files with 14 additions and 0 deletions

View File

@ -408,6 +408,13 @@ module Redmine
txt = Redmine::CodesetUtil.replace_invalid_utf8(txt)
end
txt.force_encoding('ASCII-8BIT')
elsif RUBY_PLATFORM == 'java'
begin
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txt = ic.iconv(txt)
rescue
txt = txt.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txtar = ""

View File

@ -57,6 +57,13 @@ class PdfTest < ActiveSupport::TestCase
assert_equal "ASCII-8BIT", txt_1.encoding.to_s
assert_equal "ASCII-8BIT", txt_2.encoding.to_s
assert_equal "ASCII-8BIT", txt_3.encoding.to_s
elsif RUBY_PLATFORM == 'java'
assert_equal "??",
Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_1)
assert_equal "???",
Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_2)
assert_equal "????",
Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_3)
else
assert_equal "???\x91\xd4",
Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_1)