Decodes a string, from, containing RFC 2047 encoded words into a target character set, target. See iconv_open(3) for information on the supported target encodings. If one of the encoded words cannot be converted to the target encoding, it is left in its encoded form.
# File lib/sup/rfc2047.rb, line 31 def Rfc2047.decode_to(target, from) from = from.gsub(WORDSEQ, '\1') out = from.gsub(WORD) do |word| charset, encoding, text = $1, $2, $3 # B64 or QP decode, as necessary: case encoding when 'b', 'B' #puts text text = text.unpack('m*')[0] #puts text.dump when 'q', 'Q' # RFC 2047 has a variant of quoted printable where a ' ' character # can be represented as an '_', rather than =32, so convert # any of these that we find before doing the QP decoding. text = text.tr("_", " ") text = text.unpack('M*')[0] # Don't need an else, because no other values can be matched in a # WORD. end Iconv.easy_decode(target, charset, text) end end
Generated with the Darkfish Rdoc Generator 2.