diff --git a/lib/nokogiri/html/document_fragment.rb b/lib/nokogiri/html/document_fragment.rb index 265f865dfd..466d0ce223 100644 --- a/lib/nokogiri/html/document_fragment.rb +++ b/lib/nokogiri/html/document_fragment.rb @@ -6,7 +6,17 @@ class DocumentFragment < Nokogiri::XML::DocumentFragment def self.parse tags, encoding = nil doc = HTML::Document.new - encoding ||= tags.respond_to?(:encoding) ? tags.encoding.name : 'UTF-8' + encoding ||= if tags.respond_to?(:encoding) + encoding = tags.encoding + if encoding == ::Encoding::ASCII_8BIT + 'UTF-8' + else + encoding.name + end + else + 'UTF-8' + end + doc.encoding = encoding new(doc, tags) diff --git a/test/html/test_document_fragment.rb b/test/html/test_document_fragment.rb index bdf999bf91..5476ffca15 100644 --- a/test/html/test_document_fragment.rb +++ b/test/html/test_document_fragment.rb @@ -9,6 +9,11 @@ def setup @html = Nokogiri::HTML.parse(File.read(HTML_FILE), HTML_FILE) end + def test_ascii_8bit_encoding + s = String.new 'hello', encoding: Encoding::ASCII_8BIT + assert_equal "hello", Nokogiri::HTML::DocumentFragment.parse(s).to_html + end + def test_inspect_encoding fragment = "