【问题标题】:Parsing YAML Rails fails with UTF8 problems, IRB does fine?解析 YAML Rails 失败并出现 UTF8 问题,IRB 可以吗?
【发布时间】:2011-09-13 22:00:23
【问题描述】:

我目前尝试在我的 RoR-3 应用程序中通过 XMLSimple 导入一些 XML。

在 1 个位置,XML 存储一个 YAML 结构。不要打我,我没有创建 xml ;)

现在我将它存储在一个变量中,比如说 yamldata,我想解析它的内容。

我也是这样:

chunks = YAML::load yamldata

就是这样。

当我现在将这些块值回显到控制台时,它会得到:

  • Bülach vert

我想要的是:

  • Bülach vert

当我在 IRB 中使用完全相同的源代码时,我实际上得到了这个 'ü' 而不是 'ü'。

我真的不知道在这里做什么。


我的宝石文件:

猫宝石文件

source 'http://rubygems.org'

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

红宝石-v: ruby 1.9.2p290(2011-07-09 修订版 32553)[x86_64-linux]

我会很高兴有任何想法。

注意:我之前回显了这些值!!我将它们存储到模型中,所以我猜这不是与 sql 相关的问题 - 但是,db-encoding 也是 utf8。

有什么想法吗?谢谢!

感谢帮助者! :)

【问题讨论】:

  • 你在对应的控制器中尝试了魔术引用吗?把它放在顶部“# coding: utf-8”
  • shebang 已经在那里 - 效果相同:/

标签: ruby-on-rails-3 utf-8 yaml


【解决方案1】:

我发现 irb 确实使用 Syck,rails Psych。 所以我想这是主要区别......将研究更多......

解决方案:

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

进入 boot.rb 和 BAM!

【讨论】:

    【解决方案2】:

    也许这个答案可以帮助你:

    Ruby on Rails 3, incompatible character encodings: UTF-8 and ASCII-8BIT with i18n

    他说他可以通过配置来解决类似的问题:

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

    关于 config/environment.rb

    希望对您有所帮助。

    【讨论】:

    • 感谢您的提示 - 很高兴知道这一点。不幸的是,它没有解决问题。我在 environment.rb 中取悦它 + 在控制台中也执行了它,结果非常相同。 ://
    猜你喜欢
    • 2023-03-31
    • 2021-06-05
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多