]> source.dussan.org Git - redmine.git/commitdiff
PDF: Ruby 1.9 compatibility of '0x5c'(backslash) handling in FPDF ANSI (#61, #117).
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Wed, 6 Apr 2011 05:38:31 +0000 (05:38 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Wed, 6 Apr 2011 05:38:31 +0000 (05:38 +0000)
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

index a7fd56aa86652b229ff1c32f9c806eeded9ba80b..55ab37da46d6676c938f498e80f69dcc506d3254 100644 (file)
@@ -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