ruby 1.8.7 为什么.to_yaml 将一些字符串转换为不可读字节

标签 ruby yaml

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

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 ... 输出?

最佳答案

YAML 是否更喜欢将字符串转储为文本或二进制是 ASCII 和非 ASCII 字符之间的比率问题。

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

关于ruby 1.8.7 为什么.to_yaml 将一些字符串转换为不可读字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576500/

相关文章:

ruby-on-rails - 打开终端时自动运行命令(Linux Mint 16)

arrays - 使用转置从列中删除 'nil'

Ruby 最大整数

java - 如何在读取 yaml 时保留前导空格

linux - 从 Ansible 在 Windows 上安装 IIS

java - 在两个应用程序之间共享 Spring Boot YAML 配置

ruby - 如何让 Assets 编译成自己的文件并编译到 application.js 文件中?

python - 相当于 Python 在 Ruby 中的 "with"

variables - Docker Compose 中的环境变量赋值 - 冒号方式

azure-devops - Azure Devops - 将 YAML 脚本中的变量设置为日期时间