Руби плохо обращается с еврейскими буквами - PullRequest
0 голосов
/ 07 сентября 2011

Я пытаюсь прочитать 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

Однако, это мне не помогает, и вывод команды «пут» является бессмысленным для букв иврита:

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

Я использую win xp 32 bit. Кто-нибудь знаком с этой проблемой? Что я могу сделать?

1 Ответ

2 голосов
/ 07 сентября 2011

Не думаю, что проблема в 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.

...