[英]REXML and encoding
誰能為我解釋這個結果?
#!/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,我注定要encode('UTF-8')
我從REXML中提取的每個字符串encode('UTF-8')
是原始編碼? 這是怎么回事
您在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-8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.