Don't use Iconv with ruby1.9 (#12787).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11177 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
e224d50408
commit
ff53a9cfe1
|
@ -1,4 +1,6 @@
|
||||||
require 'iconv'
|
if RUBY_VERSION < '1.9'
|
||||||
|
require 'iconv'
|
||||||
|
end
|
||||||
|
|
||||||
module Redmine
|
module Redmine
|
||||||
module CodesetUtil
|
module CodesetUtil
|
||||||
|
@ -100,10 +102,17 @@ module Redmine
|
||||||
end
|
end
|
||||||
encodings = Setting.repositories_encodings.split(',').collect(&:strip)
|
encodings = Setting.repositories_encodings.split(',').collect(&:strip)
|
||||||
encodings.each do |encoding|
|
encodings.each do |encoding|
|
||||||
begin
|
if str.respond_to?(:force_encoding)
|
||||||
return Iconv.conv('UTF-8', encoding, str)
|
str.force_encoding(encoding)
|
||||||
rescue Iconv::Failure
|
if str.valid_encoding?
|
||||||
# do nothing here and try the next encoding
|
return str.encode('UTF-8')
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
return Iconv.conv('UTF-8', encoding, str)
|
||||||
|
rescue Iconv::Failure
|
||||||
|
# do nothing here and try the next encoding
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
str = self.replace_invalid_utf8(str)
|
str = self.replace_invalid_utf8(str)
|
||||||
|
|
|
@ -17,12 +17,15 @@
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require 'iconv'
|
|
||||||
require 'tcpdf'
|
require 'tcpdf'
|
||||||
require 'fpdf/chinese'
|
require 'fpdf/chinese'
|
||||||
require 'fpdf/japanese'
|
require 'fpdf/japanese'
|
||||||
require 'fpdf/korean'
|
require 'fpdf/korean'
|
||||||
|
|
||||||
|
if RUBY_VERSION < '1.9'
|
||||||
|
require 'iconv'
|
||||||
|
end
|
||||||
|
|
||||||
module Redmine
|
module Redmine
|
||||||
module Export
|
module Export
|
||||||
module PDF
|
module PDF
|
||||||
|
@ -86,7 +89,7 @@ module Redmine
|
||||||
|
|
||||||
def SetTitle(txt)
|
def SetTitle(txt)
|
||||||
txt = begin
|
txt = begin
|
||||||
utf16txt = Iconv.conv('UTF-16BE', 'UTF-8', txt)
|
utf16txt = to_utf16(txt)
|
||||||
hextxt = "<FEFF" # FEFF is BOM
|
hextxt = "<FEFF" # FEFF is BOM
|
||||||
hextxt << utf16txt.unpack("C*").map {|x| sprintf("%02X",x) }.join
|
hextxt << utf16txt.unpack("C*").map {|x| sprintf("%02X",x) }.join
|
||||||
hextxt << ">"
|
hextxt << ">"
|
||||||
|
@ -109,6 +112,15 @@ module Redmine
|
||||||
RDMPdfEncoding::rdm_from_utf8(txt, l(:general_pdf_encoding))
|
RDMPdfEncoding::rdm_from_utf8(txt, l(:general_pdf_encoding))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Encodes an UTF-8 string to UTF-16BE
|
||||||
|
def to_utf16(str)
|
||||||
|
if str.respond_to?(:encode)
|
||||||
|
str.encode('UTF-16BE')
|
||||||
|
else
|
||||||
|
Iconv.conv('UTF-16BE', 'UTF-8', str)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def RDMCell(w ,h=0, txt='', border=0, ln=0, align='', fill=0, link='')
|
def RDMCell(w ,h=0, txt='', border=0, ln=0, align='', fill=0, link='')
|
||||||
Cell(w, h, fix_text_encoding(txt), border, ln, align, fill, link)
|
Cell(w, h, fix_text_encoding(txt), border, ln, align, fill, link)
|
||||||
end
|
end
|
||||||
|
@ -154,7 +166,7 @@ module Redmine
|
||||||
|
|
||||||
def bookmark_title(txt)
|
def bookmark_title(txt)
|
||||||
txt = begin
|
txt = begin
|
||||||
utf16txt = Iconv.conv('UTF-16BE', 'UTF-8', txt)
|
utf16txt = to_utf16(txt)
|
||||||
hextxt = "<FEFF" # FEFF is BOM
|
hextxt = "<FEFF" # FEFF is BOM
|
||||||
hextxt << utf16txt.unpack("C*").map {|x| sprintf("%02X",x) }.join
|
hextxt << utf16txt.unpack("C*").map {|x| sprintf("%02X",x) }.join
|
||||||
hextxt << ">"
|
hextxt << ">"
|
||||||
|
|
|
@ -17,6 +17,10 @@
|
||||||
|
|
||||||
require 'cgi'
|
require 'cgi'
|
||||||
|
|
||||||
|
if RUBY_VERSION < '1.9'
|
||||||
|
require 'iconv'
|
||||||
|
end
|
||||||
|
|
||||||
module Redmine
|
module Redmine
|
||||||
module Scm
|
module Scm
|
||||||
module Adapters
|
module Adapters
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
require File.expand_path('../../../../../test_helper', __FILE__)
|
require File.expand_path('../../../../../test_helper', __FILE__)
|
||||||
require 'iconv'
|
|
||||||
|
|
||||||
class PdfTest < ActiveSupport::TestCase
|
class PdfTest < ActiveSupport::TestCase
|
||||||
fixtures :users, :projects, :roles, :members, :member_roles,
|
fixtures :users, :projects, :roles, :members, :member_roles,
|
||||||
|
|
Loading…
Reference in New Issue