ruby 1.8.7中的YAML正在加载时删除字符
我有一个ruby脚本,它使用YAML序列化字符串数组,然后像这样反序列化它们:ruby 1.8.7中的YAML正在加载时删除字符,ruby,encoding,yaml,Ruby,Encoding,Yaml,我有一个ruby脚本,它使用YAML序列化字符串数组,然后像这样反序列化它们: @cache[url_key] = YAML.dump(website_data) output_array = YAML.load(@cache[url_key]) 返回的数组缺少几个字符,我认为换行符如wc所示 231 423 6340 website_data 230 423 6241 output_array 我对stackoverflow的解读表明这可能是一个编码问题。也就
@cache[url_key] = YAML.dump(website_data)
output_array = YAML.load(@cache[url_key])
返回的数组缺少几个字符,我认为换行符如wc所示
231 423 6340 website_data
230 423 6241 output_array
我对stackoverflow的解读表明这可能是一个编码问题。也就是说,YAML.dump编码不同于YAML.load编码,但我看到的stackoverflow上的所有解决方案都涉及rails,这只是一个没有rails的ruby脚本
编辑1-我尝试将编码添加到文件的第二行,但没有成功。ruby脚本的前两行看起来像
#!/usr/bin/env ruby
# encoding: ascii-8bit
有人知道如何在ruby中设置YAML的编码类型吗 您是否使用比较工具比较了这两个数据?(例如kdiff)。也许这不是编码问题,但不同的行尾(CR代替CR+LF)我确实在输入端的行尾看到^M,但在输出端没有看到。我试过kdiff,它只是说区别在于空白。kdiff甚至没有指出^M的区别。kdiff是否也有显示控件字符差异的设置?如果是不同的行尾,有没有办法阻止行尾被更改?我想我真的帮不上忙。我切换到ruby 1.9,特别是当你使用不同的编码时,它非常有用。可能只是一个尾随的换行符。