如何在ruby中读取具有特殊字符的文件?

如何在ruby中读取具有特殊字符的文件?,ruby,file,Ruby,File,我当前有一个文件,其中有一个特殊字符^M Bugs,^MMember Name,Entity Number^MPilgrim,1 404 765 909^MLovene,1 406 373 405^MLarry,1 404 867 143^MTom,^MChristine,1 404 803 973^MJacqueline,1 406 053 064 当我试图读取此文件时,只输出最后一行:Jacqueline,1406 053 064。我有以下问题,但它不起作用 file.each {|lin

我当前有一个文件,其中有一个特殊字符^M

Bugs,^MMember Name,Entity Number^MPilgrim,1 404 765 909^MLovene,1 406 373 405^MLarry,1 404 867 143^MTom,^MChristine,1 404 803 973^MJacqueline,1 406 053 064
当我试图读取此文件时,只输出最后一行:Jacqueline,1406 053 064。我有以下问题,但它不起作用

file.each {|line| puts line }

您所说的
^M
是值为0x0d的字符。你可以使用

File.read("filename").gsub "\r", ''
或者用它分割文件的内容

File.read("filename").split "\r"
正如LBg所指出的,某些平台(如Windows)要求您以二进制模式打开文件以读取CR字符

File.read("filename", "rb").split "\r"

您所说的
^M
是值为0x0d的字符。你可以使用

File.read("filename").gsub "\r", ''
或者用它分割文件的内容

File.read("filename").split "\r"
正如LBg所指出的,某些平台(如Windows)要求您以二进制模式打开文件以读取CR字符

File.read("filename", "rb").split "\r"

要正确读取
“\r”
,必须以二进制模式打开:
文件。打开(“文件名”,“rb”){f | f.read}.split(“\r”)
。是的,但这仅适用于Windows。POSIX平台忽略“b”(cf.)。要正确读取
“\r”
,必须以二进制模式打开:
文件。打开(“filename”,“rb”){f | f.read}.split(“\r”)
。是的,但这仅适用于Windows。POSIX平台忽略“b”(参见)。