无法读取 ASCII 或 UTF-8 格式的字符串
如果我检查我正在读取的文件的字符集,我会得到:
text/plain; charset=us-ascii
所以我正在像这样读取它:
File.open(@file_path, r:ASCII) do |f|
f.each_line do |line|
line = line.rstrip.force_encoding("ASCII")
在我点击此行之前,它工作正常:
"Seat 2: tchin\xE9 ($423 in chips)"
我在哪里收到此错误:
ArgumentError: invalid byte sequence in US-ASCII
此行在我的文本编辑器中看起来像这样:
"Seat 2: tchin? ($423 in chips)"
如果我尝试以 UTF-8 而不是 ASCII 的形式读取它,我会得到同样的错误:
ArgumentError: invalid byte sequence in UTF-8
关于我应该做什么的任何想法。我尝试使用 iconv 将其从 ASCII 转换为 UTF-8,但收到此错误:
Iconv::IllegalSequence: "\xE9 ($423 in chips"
If I check the charset of a file that I'm reading from I get:
text/plain; charset=us-ascii
So I am reading it in like:
File.open(@file_path, r:ASCII) do |f|
f.each_line do |line|
line = line.rstrip.force_encoding("ASCII")
Which works fine until I hit this line:
"Seat 2: tchin\xE9 ($423 in chips)"
Where I get this error:
ArgumentError: invalid byte sequence in US-ASCII
This line looks like this in my text editor:
"Seat 2: tchin? ($423 in chips)"
If I try reading it in as UTF-8 instead of ASCII, I get the same error:
ArgumentError: invalid byte sequence in UTF-8
Any ideas of what I should be doing. I have tried using iconv to convert it from ASCII to UTF-8 and and I get this error:
Iconv::IllegalSequence: "\xE9 ($423 in chips"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ASCII 是 7 位编码(最多 127、128 个字符),而不是 8 位(最多 255、256 个字符)。
E9(十进制 233,可能是 é)高于 128。所以你没有 ASCII,ruby 错误消息是正确的。
我预计是 cp1252。
更新:
我很确定,这是一个é。 “Seat 2: tchiné ($423 inchips)”这句话是有道理的(我不知道它是什么,但它似乎是扑克中的东西。
您的编辑器可能不会显示 é,因此它会显示替换字符。
ASCII is a 7-bit encoding (max 127, 128 characters), not 8 bit (max 255, 256 characters).
E9 (Decimal 233, probably a é) is higher then 128. So you have no ASCII, the ruby error message is correct.
I expect it is cp1252.
Update:
I'm quiet sure, it is a é. The sentence "Seat 2: tchiné ($423 in chips)" makes sense (I don't know what it is, but it seems to be something in Poker.
Your editor may not display the é, so it displays a substitute character.
将文件读取为“r:ISO8859-1”有效。
Reading the file as "r:ISO8859-1" worked.