Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby 1.8.7中的YAML正在加载时删除字符_Ruby_Encoding_Yaml - Fatal编程技术网

ruby 1.8.7中的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的解读表明这可能是一个编码问题。也就

我有一个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的解读表明这可能是一个编码问题。也就是说,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,特别是当你使用不同的编码时,它非常有用。可能只是一个尾随的换行符。