ruby - 在ruby中读取文件时是否可以指定换行符类型

标签 ruby character-encoding

我经常处理在具有\r\n 回车符的 Windows 上编码的 UTF-16LE 文件。使用以下命令将文件转换为 UTF-8 没有问题:

File.new(filepath, 'r:utf-16le:utf-8')

但这当然没有去掉\r。我目前摆脱它们的方式是

str.gsub("\r", "")

但是在读取文件时处理它会很好。String#encode 有 :cr_newline、:crlf_newline 和 :universal_newline 选项,可以将所有换行符转换为所需的换行符类型。有没有办法在读取文件时应用这些或类似的选项?

最佳答案

IO#gets 方法接受一个可选参数,允许您传递一个字符串来定义如何分隔行:

file = File.new(filepath, 'r:utf-16le:utf-8')
while (line = file.gets("\r\n"))
   ...
end

关于ruby - 在ruby中读取文件时是否可以指定换行符类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093029/

相关文章:

ruby - IRB 有哪些替代方案?

ruby datamapper 如何在查询中包含 has n association 的子关联

character-encoding - 在 neovim 缓冲区中打印随机字符

java - 无法更改servlet的输出字符编码

r - 编码问题: how to let console print "ć" instead of "c"?

c++ - 有没有一种符合标准的方法来用 C++ 编写可移植的 ls 实用程序?

用于在字符编码之间进行转换的 Java 库

ruby-on-rails - Rails 中的递归路由

ruby-on-rails - Apache-Passenger 无法启动我的生产 Rails 应用程序

ruby - Mechanize 找不到合适的字段