簡體   English   中英

REXML和編碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM