编写一个Ruby程序来替换文本文件中的单行。
当我在macOS 10.12中的终端中运行程序时,Ruby会在我的文本文件中引发异常。具体来说,消息是: myprog.rb:3:在'block in'中:UTF-8中无效的字节序列(ArgumentError)。该程序适用于大约30行数据,直到达到数据中的行包含版权符号©编码为单字节,值为0xA9。
在终端中,文件命令显示“ISO-8859文本,带有CRLF行终止符”详细信息:数据文件是 Inno Setup <的脚本/ strong>,是用 Inno Setup Compiler 编写的,该程序很满意。我的Ruby程序旨在制作原件的副本以进行调试。
fname = '/Users/Vacuumhead/Documents/Temp/myscript.iss'
File.foreach(fname) { |line|
if line =~ /^OutputDir/
puts 'OutputDir=Y:\\Users\\Vacuumhead\\Temp'
else
puts line
end
}
我将foreach(fname)
更改为foreach(fname, 'r:iso-8559-1')
。然后我在第一行数据上得到了相同的运行时错误。从本质上讲,事情变得更糟。
我也尝试在 Windows 7 中运行我的Ruby程序的第一个版本,并且工作正常,所以最终我完成了我的工作已经着手做了,此时问题实际上只是学术问题。但是我特别想知道为什么在Windows中运行的Ruby程序不能在 macOS 中运行,以及如何为macOS修复它。