有人能给我解释一下这个结果吗?
#!/usr/bin/env ruby
# encoding: utf-8
require 'rexml/document'
doc = REXML::Document.new(DATA)
puts "doc: #{doc.encoding}"
REXML::XPath.each(doc, '//item') do |item|
puts " #{item}: #{item.to_s.encoding}"
end
__END__
<doc>
<item>Test</item>
<item>Über</item>
<item>8</item>
</doc>输出:
doc: UTF-8
<item>Test</item>: US-ASCII
<item>Über</item>: UTF-8
<item>8</item>: US-ASCII看起来REXML似乎并不关心文档编码是什么,并开始自动检测每个项目的编码...即使UTF-8是原始编码,我是否注定要对从REXML中提取的每个字符串执行encode('UTF-8')操作?这是怎么回事?
发布于 2013-04-10 15:07:47
您正在Element上调用Node.to_s()。要获取实际文本,请将Element.get_text()添加到链中(并对其调用Text.to_s() ):
puts " #{item}: #{item.get_text.to_s.encoding}"输出:
doc: UTF-8
<item>Test</item>: UTF-8
<item>Über</item>: UTF-8
<item>8</item>: UTF-8https://stackoverflow.com/questions/15918484
复制相似问题