我试图从文件plainprogram.txt
中取一行,将其拆分到空格中,然后将它们存储在一个数组中。这是plainprogram.txt
中的普通程序文本:
5 cmt A program with a simple loop that counts down.
10 get x
20 if x = 0 goto 90
30 output x
40 let x = x – 1
50 goto 20
90 stop
它应该类似于可怕的编程语言的代码。这是我的代码:
File.readlines("plainprogram.txt").each do |line|
pieces = line.split()
end
我收到此错误
Traceback (most recent call last):
3: from main.rb:13:in <main>
2: from main.rb:13:in each
1: from main.rb:14:in block in <main>
main.rb:14:in split: invalid byte sequence in US-ASCII
(ArgumentError)
我无法弄清楚为什么这段代码会引发错误。我不明白为什么split
会抛出此错误,也不知道如何修复它。
答案 0 :(得分:3)
Ruby通常默认为UTF-8,但有关您的环境/版本的内容似乎并非如此。您可以强制执行如下编码:
File.readlines('plainprogram.txt', :encoding => 'UTF-8')
答案 1 :(得分:0)
输入中有一个非ascii字符,如果没有hexdump
之类的工具,以下对程序的轻微修改可以识别它:
File.readlines("plainprogram.txt").each do |line|
line.each_char { |chr| STDERR.puts "#{chr} : #{chr.ord}" if chr.ord > 127 }
pieces = line.split()
end