class Iconv

Constants

UNKNOWN_CHARACTER

Public Class Methods

iconv_to_from(to, from, str) click to toggle source
# File vendor/qwik/lib/qwik/util-charset.rb, line 167
def self.iconv_to_from(to, from, str)
  iconv = Iconv.new(to, from)
  out = ''
  begin
    out << iconv.iconv(str)
  rescue Iconv::IllegalSequence => e  # FIXME: Merge with InvalidCharacter
    out << e.success
    ch, str = e.failed.split(//u, 2)
    out << UNKNOWN_CHARACTER
    retry
  rescue Iconv::InvalidCharacter => e
    out << e.success
    ch, str = e.failed.split(//u, 2)
    out << UNKNOWN_CHARACTER
    retry
  end
  out.set_charset(to)
  return out
end
iconv_to_utf8(from, str) click to toggle source
# File vendor/qwik/lib/qwik/util-charset.rb, line 187
def self.iconv_to_utf8(from, str)
  to = 'UTF-8'
  iconv = Iconv.new(from, to)
  out = ''
  begin
    out << iconv.iconv(str)
  rescue Iconv::IllegalSequence => e
    out << e.success
    ch, str = e.failed.split(//u, 2)
    if respond_to?(:unknown_unicode_handler)
      u = ch.unpack('U').first
      out << unknown_unicode_handler(u)
    else
      out << UNKNOWN_CHARACTER
    end
    retry
  end
  out.set_charset(to)
  return out
end
unknown_unicode_handler(u) click to toggle source
# File vendor/qwik/lib/qwik/util-charset.rb, line 208
def self.unknown_unicode_handler (u)
  return sprintf("&#x%04x;", u)
end