无法读取 ASCII 或 UTF-8 格式的字符串

发布于 2024-12-10 11:38:38 字数 762 浏览 0 评论 0原文

如果我检查我正在读取的文件的字符集,我会得到:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我早已燃尽 2024-12-17 11:38:38

ASCII 是 7 位编码(最多 127、128 个字符),而不是 8 位(最多 255、256 个字符)。

E9(十进制 233,可能是 é)高于 128。所以你没有 ASCII,ruby 错误消息是正确的。
我预计是 cp1252。

更新:
我很确定,这是一个é。 “Seat 2: tchiné ($423 inchips)”这句话是有道理的(我不知道它是什么,但它似乎是扑克中的东西。

这行在我的文本编辑器中看起来像这样:

“座位 2:tchin?(筹码 423 美元)”

您的编辑器可能不会显示 é,因此它会显示替换字符。

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.

This line looks like this in my text editor:

"Seat 2: tchin? ($423 in chips)"

Your editor may not display the é, so it displays a substitute character.

忆梦 2024-12-17 11:38:38

将文件读取为“r:ISO8859-1”有效。

Reading the file as "r:ISO8859-1" worked.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文