如何在 Nokogiri::XML::DocumentFragment 中使用 Unicode 字符
How to use Unicode chars with Nokogiri::XML::DocumentFragment
我想在 Nokogiri::XML::DocumentFragment
中使用 Unicode 字符。
frag = Nokogiri::XML::DocumentFragment.parse("<foo>ü</foo>")
=> <foo>ü</foo>
unicode 字符被转义。我需要设置 encoding: 'UTF-8'
以获得可读的字符。
frag.to_html(encoding: 'UTF-8')
=> "<foo>ü</foo>"
解析字符串时是否有编码选项?
Nokogiri::HTML::DocumentFragment.parse
按我的预期处理字符串,但我需要使用 XML
.
frag = Nokogiri::HTML::DocumentFragment.parse("<foo>ü</foo>")
=> <foo>ü</foo>
根据文档here,文本已在内部存储为 UTF-8。
Strings are always stored as UTF-8 internally. Methods that return text values will always return UTF-8 encoded strings. Methods that return XML (like to_xml, to_html and inner_html) will return a string encoded like the source document.
因此,如果您在 frag
上调用 #text
而不是打印整个 frag
对象,您会看到 ü 正确打印
puts frag.text
# => ü
否则你可以直接使用#XML
代替#DocumentFragment
并显式传递编码。
doc = Nokogiri.XML('<foo>ü</foo>', nil, 'UTF-8')
puts doc
# => <?xml version="1.0" encoding="UTF-8"?>
# => <foo>ü</foo>
我想在 Nokogiri::XML::DocumentFragment
中使用 Unicode 字符。
frag = Nokogiri::XML::DocumentFragment.parse("<foo>ü</foo>")
=> <foo>ü</foo>
unicode 字符被转义。我需要设置 encoding: 'UTF-8'
以获得可读的字符。
frag.to_html(encoding: 'UTF-8')
=> "<foo>ü</foo>"
解析字符串时是否有编码选项?
Nokogiri::HTML::DocumentFragment.parse
按我的预期处理字符串,但我需要使用 XML
.
frag = Nokogiri::HTML::DocumentFragment.parse("<foo>ü</foo>")
=> <foo>ü</foo>
根据文档here,文本已在内部存储为 UTF-8。
Strings are always stored as UTF-8 internally. Methods that return text values will always return UTF-8 encoded strings. Methods that return XML (like to_xml, to_html and inner_html) will return a string encoded like the source document.
因此,如果您在 frag
上调用 #text
而不是打印整个 frag
对象,您会看到 ü 正确打印
puts frag.text
# => ü
否则你可以直接使用#XML
代替#DocumentFragment
并显式传递编码。
doc = Nokogiri.XML('<foo>ü</foo>', nil, 'UTF-8')
puts doc
# => <?xml version="1.0" encoding="UTF-8"?>
# => <foo>ü</foo>