【问题标题】:ruby 1.8.7 why .to_yaml converts some Strings to non-readable bytesruby 1.8.7 为什么 .to_yaml 将一些字符串转换为不可读的字节
【发布时间】:2011-09-27 22:43:01
【问题描述】:

使用 nokogiri 解析一些网页时,我在清理一些字符串并使用 YAML 保存它们时遇到了一些问题。要重现问题,请查看重现相同问题的 IRB 会话:

irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> "1,000 €".to_yaml
=> "--- !binary |\nMSwwMDAg4oKs\n\n"
irb(main):003:0> "1,0000 €".to_yaml
=> "--- \"1,0000 \\xE2\\x82\\xAC\"\n"
irb(main):004:0> "1,00 €".to_yaml
=> "--- !binary |\nMSwwMCDigqw=\n\n"
irb(main):005:0> "1 €".to_yaml
=> "--- !binary |\nMSDigqw=\n\n"
irb(main):006:0> "23 €".to_yaml
=> "--- !binary |\nMjMg4oKs\n\n"
irb(main):007:0> "12000 €".to_yaml
=> "--- !binary |\nMTIwMDAg4oKs\n\n"
irb(main):008:0> "1200000 €".to_yaml
=> "--- \"1200000 \\xE2\\x82\\xAC\"\n"
irb(main):009:0> "120000 €".to_yaml
=> "--- \"120000 \\xE2\\x82\\xAC\"\n"
irb(main):010:0> "12000 €".to_yaml
=> "--- !binary |\nMTIwMDAg4oKs\n\n"

总而言之,有时 .to_yaml 输出是可读的,而有时输出是不可读的。最耐人寻味的方面是字符串非常相似。

我怎样才能避免那些 !binary ... 输出?

【问题讨论】:

标签: ruby yaml


【解决方案1】:

YAML 更喜欢将字符串转储为文本还是二进制,这取决于 ASCII 字符和非 ASCII 字符之间的比率。

如果你想尽可能避免!binary,你应该使用ya2yaml gem。它努力将字符串转储为 ASCII + 转义的 UTF-8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2019-10-10
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多