Module REXML::Encoding
In: rexml/encodings/UTF-8.rb
rexml/encodings/UTF-16.rb
rexml/encodings/US-ASCII.rb
rexml/encodings/UNILE.rb
rexml/encodings/SHIFT-JIS.rb
rexml/encodings/ISO-8859-15.rb
rexml/encodings/ISO-8859-1.rb
rexml/encodings/ICONV.rb
rexml/encodings/EUC-JP.rb
rexml/encodings/CP-1252.rb
rexml/encoding.rb

Methods

Constants

UTF_8 = 'UTF-8'   Native, default format is UTF-8, so it is declared here rather than in an encodings/ definition.
UTF_16 = 'UTF-16'
UNILE = 'UNILE'

Attributes

encoding  [R]  ID —> Encoding name

Public Class methods

[Source]

# File rexml/encoding.rb, line 8
               def self.apply(obj, enc)
                       @encoding_methods[enc][obj]
               end

[Source]

# File rexml/encoding.rb, line 11
               def self.encoding_method(enc)
                       @encoding_methods[enc]
               end

[Source]

# File rexml/encoding.rb, line 5
               def self.register(enc, &block)
                       @encoding_methods[enc] = block
               end

Public Instance methods

[Source]

# File rexml/encoding.rb, line 55
                def check_encoding str
                        # We have to recognize UTF-16, LSB UTF-16, and UTF-8
                        return UTF_16 if str[0] == 254 && str[1] == 255
                        return UNILE if str[0] == 255 && str[1] == 254
                        str =~ /^\s*<?xml\s*version=(['"]).*?\2\s*encoding=(["'])(.*?)\2/um
                        return $1.upcase if $1
                        return UTF_8
                end

Convert to UTF-8

[Source]

# File rexml/encodings/US-ASCII.rb, line 19
    def decode_ascii(str)
      str.unpack('C*').pack('U*')
    end

[Source]

# File rexml/encodings/EUC-JP.rb, line 5
    def decode_eucjp(str)
      Uconv::euctou8(str)
    end

[Source]

# File rexml/encodings/ICONV.rb, line 6
    def decode_iconv(str)
      Iconv.conv(UTF_8, @encoding, str)
    end

[Source]

# File rexml/encodings/SHIFT-JIS.rb, line 5
    def decode_sjis content
      Uconv::sjistou8(content)
    end

[Source]

# File rexml/encodings/UNILE.rb, line 18
    def decode_unile(str)
      array_enc=str.unpack('C*')
      array_utf8 = []
      2.step(array_enc.size-1, 2){|i| 
        array_utf8 << (array_enc.at(i) + array_enc.at(i+1)*0x100)
      }
      array_utf8.pack('U*')
    end

[Source]

# File rexml/encodings/UTF-16.rb, line 18
    def decode_utf16(str)
      array_enc=str.unpack('C*')
      array_utf8 = []
      2.step(array_enc.size-1, 2){|i| 
        array_utf8 << (array_enc.at(i+1) + array_enc.at(i)*0x100)
      }
      array_utf8.pack('U*')
    end

[Source]

# File rexml/encodings/UTF-8.rb, line 7
    def decode_utf8(str)
      str
    end

Convert from UTF-8

[Source]

# File rexml/encodings/US-ASCII.rb, line 4
    def encode_ascii content
      array_utf8 = content.unpack('U*')
      array_enc = []
      array_utf8.each do |num|
        if num <= 0x7F
          array_enc << num
        else
          # Numeric entity (&#nnnn;); shard by  Stefan Scholl
          array_enc.concat "&\##{num};".unpack('C*')
        end
      end
      array_enc.pack('C*')
    end

[Source]

# File rexml/encodings/EUC-JP.rb, line 9
    def encode_eucjp content
      Uconv::u8toeuc(content)
    end

[Source]

# File rexml/encodings/ICONV.rb, line 10
    def encode_iconv(content)
      Iconv.conv(@encoding, UTF_8, content)
    end

[Source]

# File rexml/encodings/SHIFT-JIS.rb, line 9
    def encode_sjis(str)
      Uconv::u8tosjis(str)
    end

[Source]

# File rexml/encodings/UNILE.rb, line 3
    def encode_unile content
      array_utf8 = content.unpack("U*")
      array_enc = []
      array_utf8.each do |num|
        if ((num>>16) > 0)
          array_enc << ??
          array_enc << 0
        else
          array_enc << (num & 0xFF)
          array_enc << (num >> 8)
        end
      end
      array_enc.pack('C*')
    end

[Source]

# File rexml/encodings/UTF-16.rb, line 3
    def encode_utf16 content
      array_utf8 = content.unpack("U*")
      array_enc = []
      array_utf8.each do |num|
        if ((num>>16) > 0)
          array_enc << 0
          array_enc << ??
        else
          array_enc << (num >> 8)
          array_enc << (num & 0xFF)
        end
      end
      array_enc.pack('C*')
    end

[Source]

# File rexml/encodings/UTF-8.rb, line 3
    def encode_utf8 content
      content
    end

[Source]

# File rexml/encoding.rb, line 23
                def encoding=( enc )
                        old_verbosity = $VERBOSE
                        begin
                                $VERBOSE = false
                                return if defined? @encoding and enc == @encoding
                                if enc and enc != UTF_8
                                        @encoding = enc.upcase
                                        begin
                                               require 'rexml/encodings/ICONV.rb'
                                               Encoding.apply(self, "ICONV")
                                        rescue LoadError, Exception => err
                                               raise ArgumentError, "Bad encoding name #@encoding" unless @encoding =~ /^[\w-]+$/
                                                @encoding.untaint 
                                                enc_file = File.join( "rexml", "encodings", "#@encoding.rb" )
                                                begin
                                                       require enc_file
                                                       Encoding.apply(self, @encoding)
                                                rescue LoadError
                                                       puts $!.message
                                                       raise ArgumentError, "No decoder found for encoding #@encoding.  Please install iconv."
                                                end
                                        end
                                else
                                       @encoding = UTF_8
                                       require 'rexml/encodings/UTF-8.rb'
                                       Encoding.apply(self, @encoding)
                                end
                        ensure
                                $VERBOSE = old_verbosity
                        end
                end

[Validate]