Ruby不会很好地对待希伯来字母

时间:2011-09-07 10:08:52

标签: ruby xml encoding hebrew

我正在尝试阅读一个也带有希伯来字母的XML,其内容是:

<?xml version="1.0" encoding="UTF-8"?>
<keywords type="array">
  <keyword>seo software</keyword>
  <keyword>ipad</keyword>
  <keyword>muffuletta manhattanization</keyword>
  <keyword>cheap motels</keyword>
  <keyword>שפות תכנות</keyword>
</keywords>

我的代码是:

# encoding: UTF-8 
def use
  #require "rexml/document"
  file = File.new( "sources/rankabove-test.xml" ) 
  puts file.read  
end

然而,它对我没有帮助,'puts'命令的输出对希伯来字母来说是胡言乱语:

╫⌐╫ñ╫ץ╫¬ ╫¬╫¢╫á╫ץ╫¬

我正在使用win xp 32位。有人熟悉这个问题吗?我能做什么?

1 个答案:

答案 0 :(得分:2)

我认为问题不是Ruby:

# encoding: UTF-8

puts RUBY_VERSION
# >> 1.9.2

xml = '
<?xml version="1.0" encoding="UTF-8"?>
<keywords type="array">
  <keyword>seo software</keyword>
  <keyword>ipad</keyword>
  <keyword>muffuletta manhattanization</keyword>
  <keyword>cheap motels</keyword>
  <keyword>שפות תכנות</keyword>
</keywords>
'

require 'nokogiri'

doc = Nokogiri::XML(xml)
puts doc.search('//keyword').last.text
# >> שפות תכנות

require "rexml/document"
require 'rexml/node'
require 'rexml/xpath'

doc = REXML::Document.new(xml)
puts REXML::XPath.match(doc, '//keyword').last.text
# >> שפות תכנות

同时使用Nokogiri和REXML,我在Mac OS上获得相同的输出。