我有一个具有以下结构的YAML文件:
mytext:
mykey: "\x9A\xA6@\e8ddw\xB6&*\xFFr\x81\\\xC8@\xCC\x1E^\xD6\x13^\xD2\x91\x17\xEA\xB0\x001\xDD\xC1"
myvalue: "8\xD8I\x00=\x9E\xF2I\x99tUK\xFD\x16\xA3Y"
我使用下面的ruby代码从这个YAML文件中读取数据:
yamlfilen = YAML::load_file('yamlfile.yml') #Load
mykey = yamlfilen['mytext']['mykey']
myiv = yamlfilen['mytext']['myvalue']
p mykey
p myiv
当我看到控制台中打印的值时,我看到了:
"\\x9A\\xA6@\\e8ddw\\xB6&*\\xFFr\\x81\\\\\\xC8@\\xCC\\x1E^\\xD6\\x13^\\xD2\\x91\\x17\\xEA\\xB0\\x001\\xDD\\xC1"
"8\\xD8I\\x00=\\x9E\\xF2I\\x99tUK\\xFD\\x16\\xA3Y"
知道为什么会这样吗?
答案 0 :(得分:3)
发现它没有给你不正确的值
"8\\xD8I\\x00=\\x9E\\xF2I\\x99tUK\\xFD\\x16\\xA3Y"
这实际上是正确的值,但\
会使用额外的\
进行转义。
这就是为什么当你看到一个字符串时它会显示\
两次
如果您只是打印该值,您将看到正确的值
puts "8\\xD8I\\x00=\\x9E\\xF2I\\x99tUK\\xFD\\x16\\xA3Y"
#=> 8\xD8I\x00=\x9E\xF2I\x99tUK\xFD\x16\xA3Y
注意: \
是用于ex的特殊字符的转义字符。
\t
- >标签\n
- >新行