【发布时间】:2013-04-10 06:25:37
【问题描述】:
谁能帮我解释一下这个结果?
#!/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 不关心文档编码是什么,并开始自动检测每个项目的编码...我是否注定要 encode('UTF-8') 从 REXML 中提取的每个字符串,即使 UTF-8 是原始编码?这里发生了什么?
【问题讨论】:
-
好问题。对我来说是新维度。