def detect_encoding
encoding = detect_bom
if encoding.nil? and @parse_meta
encoding = detect_encoding_meta
end
if encoding.nil? and @chardet
begin
require 'rubygems'
require 'UniversalDetector'
buffers = []
detector = UniversalDetector::Detector.instance
detector.reset
until @raw_stream.eof?
buffer = @raw_stream.read(@NUM_BYTES_CHARDET)
break if !buffer or buffer.empty?
buffers << buffer
detector.feed(buffer)
break if detector.instance_eval {@done}
detector.instance_eval {
@_mLastChar = @_mLastChar.chr if Fixnum === @_mLastChar
}
end
detector.close
encoding = detector.result['encoding']
seek(buffers*'', 0)
rescue LoadError
end
end
if encoding.nil?
encoding = @DEFAULT_ENCODING
end
if 'iso-8859-1' == encoding.downcase
encoding = 'windows-1252'
end
encoding
end