From a4bad1435912b7ada79961c6d889359b4991a1a5 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Wed, 6 Apr 2011 05:38:31 +0000 Subject: [PATCH] PDF: Ruby 1.9 compatibility of '0x5c'(backslash) handling in FPDF ANSI (#61, #117). Japanese Shift_JIS and Traditional Chinese Big5 have '0x5c'(backslash) problem. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5343 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/export/pdf.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/redmine/export/pdf.rb b/lib/redmine/export/pdf.rb index a7fd56aa8..55ab37da4 100644 --- a/lib/redmine/export/pdf.rb +++ b/lib/redmine/export/pdf.rb @@ -143,12 +143,19 @@ module Redmine end def fix_text_encoding(txt) - @ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8') - txt = begin - @ic.iconv(txt) - rescue - txt - end || '' + if txt.respond_to?(:force_encoding) + txt.force_encoding('UTF-8') + txt = txt.encode(l(:general_pdf_encoding), :invalid => :replace, + :undef => :replace, :replace => '?') + txt.force_encoding('ASCII-8BIT') + else + @ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8') + txt = begin + @ic.iconv(txt) + rescue + txt + end || '' + end # 0x5c char handling txt.gsub(/\\/, "\\\\\\\\") end -- 2.39.5