我有一个非常简单的例子:
content = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x0D, 0x0A] # "Hello\r\n"
f = File.new("PATH", "w")
content.each {|b| f.write(b.chr)}
f.close
我试图写一些文件,然后我发现,Ruby为每个\r
和\r
以及每个\n
和\r\n
写道。因此,当我运行我的代码示例时,Ruby不会将Hello\r\n
写入文件,而是编写Hello\r\r\n
。 有没有办法防止这种情况或写入每个字节而不添加其他字节?
答案 0 :(得分:4)
“b” - 二进制文件模式。抑制EOL< - >除非明确指定,否则在Windows上进行CRLF转换并将外部编码设置为ASCII-8BIT。
因此,您需要使用'wb'
代替'w'
来解决您的问题。
您可以编写如下代码:
content = [0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x0D, 0x0A] # "Hello\r\n"
f = File.new("PATH", "wb")
content.each {|b| f.write(b.chr)}
f.close