Невозможно прочитать в строке как ASCII или UTF-8 - PullRequest
0 голосов
/ 18 октября 2011

Если я проверяю кодировку файла, из которого я читаю, я получаю:

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"

Ответы [ 2 ]

1 голос
/ 18 октября 2011

ASCII - это 7-битная кодировка (макс. 127, 128 символов), а не 8-битная (макс. 255, 256 символов).

E9 (десятичное число 233, вероятно, é ) выше 128. Таким образом, у вас нет ASCII, сообщение об ошибке ruby ​​верно. Я ожидаю, что это cp1252.

Обновление: Я тихо уверен, это é . Предложение «Seat 2: tchiné ($ 423 в фишках)» имеет смысл (я не знаю, что это такое, но в покере это похоже.

Эта строка выглядит в моем текстовом редакторе следующим образом:

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

Ваш редактор может не отображать é , поэтому он отображает замещающий символ.

0 голосов
/ 18 октября 2011

Считывание файла как "r: ISO8859-1" сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...