Chinese characters become to &#3342 after "to_xml"

Why?

Browser can translate &#xxxx; into Chinese, but I want to get the real
UTF-8 Chinese characters.

Please kindly help, thanks!

It's built into Builder::XmlMarkup. You can run a transform on the
returned XML to un-escape characters that are encoded into numbers.
This assumes that all characters from emitted from #to_xml were
Unicode.

def unescape_numeric_entities(xml)
  xml.gsub(/&#(\d+);/) do |c|
    [$1.to_i].pack("U") rescue c
  end
end

unescape_numeric_entities(record.to_xml)

Thank you very much!