Сбой синтаксического анализа YAML Rails из-за проблем с UTF8 - PullRequest
0 голосов
/ 14 сентября 2011

В настоящее время я пытаюсь импортировать XML через XMLSimple в моем приложении RoR-3.

на 1 позицию, в которой XML хранит YAML-структуру. Не шлепни меня, я не создал xml;)

теперь, когда он хранится в переменной, допустим, yamldata , я хочу проанализировать его содержимое.

так что я делаю:

chunks = YAML::load yamldata

и это здорово.

когда я теперь передаю эти значения в консоль, он получает это:

  • Бюлах Верт

что я хотел бы получить:

  • Бюлах Верт

когда я использую точно такой же исходный код в IRB, я фактически получаю это 'ü' вместо 'ü'.

Я действительно не знаю, что здесь делать.


мой Gemfile:

кошка Gemfile

source 'http://rubygems.org'

gem 'rails', '3.1.0'
gem 'mysql2'
gem 'haml'
gem 'activerecord', :require => "active_record"
gem 'xml-simple'
gem 'hpricot'

ruby ​​-v: ruby 1.9.2p290 (редакция 2011-07-09, 32553) [x86_64-linux]

Я был бы счастлив с любой идеей.

Примечание: я повторяю эти значения раньше !! я сохраняю их в модели, так что я думаю, что это не проблема, связанная с sql - однако, db-encoding тоже utf8.

есть идеи? Спасибо!

спасибо помощникам! :)

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

я обнаружил, что irb использует Syck, rails Psych. так что я думаю, что это главное различие ... будем исследовать больше ..

РЕШЕНИЕ:

 require 'yaml'
 YAML::ENGINE.yamler= 'syck'

в boot.rb и BAM!

0 голосов
/ 14 сентября 2011

Может быть, этот ответ поможет вам:

Ruby on Rails 3, несовместимые кодировки символов: UTF-8 и ASCII-8BIT с i18n

Он утверждает, что онможет решить аналогичную проблему, настроив это:

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

в config / environment.rb

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...