如何在Windows上的Ruby中只向STDOUT写一个0x0A字符?

时间:2011-09-23 19:32:49

标签: ruby windows

如何在Windows上的Ruby中只向STDOUT写一个0x0A字符。只有一个,没有0x0D。

@EDIT:谢谢大家!我知道二进制/文本模式的概念,但不知道如何在Ruby解释器中处理它。解决方案是使用STDOUT.binmode

如果使用与平台无关的代码将STDOUT切换回文本模式,还有一个悬而未决的问题。

1 个答案:

答案 0 :(得分:5)

这是由于“虚拟换行符”。在(Ruby)IO层,此功能负责将“\ n”(0x0A,LF)映射到Operating Systems definition of a newline。 Windows将“\ n”映射到CR + LF(而在类Unix系统中,“\ n”未映射到LF)。

使用ios.binmode将流置于二进制模式,禁用“虚拟换行”模式。这对于处理二进制流(如图像)非常重要; - )

快乐的编码。