2011-09-07 29 views
0

我想讀這也有希伯來字母的XML,其內容爲:Ruby沒有把希伯來字母以及

<?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 

然而,這並不能幫助我,和「看跌期權」命令的輸出是希伯來字母的廢話

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

我使用Win XP的32位。有誰熟悉這個問題?我能做什麼?

+0

我敢打賭,你的終端不支持unicode –

+0

通過終端 - 你的意思是我的筆記本電腦?我該如何解決它? (贏32位) - 編輯:我只是檢查,它確實支持unicode – Assaf

+0

你看到的不是你得到的。不要用眼睛來判斷輸出。衡量它。 – tchrist

回答

2

我不認爲這個問題是紅寶石:

# 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相同的輸出。

+0

您是對的,剛剛瞭解它是關於我的電腦。 – Assaf