Method: LibXML::XML::Reader#encoding

Defined in:
ext/libxml/ruby_xml_reader.c

#encodingXML::Encoding::UTF_8

Returns the encoding of the document being read. Note you first have to read data from the reader for encoding to return a value

reader = XML::Reader.file(XML_FILE)
assert_nil(reader.encoding)
reader.read
assert_equal(XML::Encoding::UTF_8, reader.encoding)

In addition, libxml always appears to return nil for the encoding when parsing strings.



699
700
701
702
703
704
705
706
707
# File 'ext/libxml/ruby_xml_reader.c', line 699

static VALUE rxml_reader_encoding(VALUE self)
{
  xmlTextReaderPtr xreader = rxml_text_reader_get(self);
  const xmlChar *xencoding = xmlTextReaderConstEncoding(xreader);
  if (xencoding)
    return INT2NUM(xmlParseCharEncoding((const char*)xencoding));
  else
    return INT2NUM(XML_CHAR_ENCODING_NONE);
}