true, :encoding => "UTF-8") sessions.each do | session | p session['col1'] "> true, :encoding => "UTF-8") sessions.each do | session | p session['col1'] "> true, :encoding => "UTF-8") sessions.each do | session | p session['col1'] " />

чтение заголовка из файла CSV UTF8 с использованием Ruby

Я пытаюсь прочитать файл CSV в ruby 1.9.3 (я не использую Rails).

sessions = CSV.read("c:/scripts/ruby/testcsvencoding.csv", :headers => true, 
:encoding => "UTF-8") 

sessions.each do | session |
  p session['col1']    <-- does not work
  p session[0]   <--- works
end

Файл содержит:

col1, col2
a,1
b,2

Я видел, что кажется " Avoding« Неверная последовательность байтов в UTF-8 »с файлами ruby и CSV », но это может быть не та же проблема, что и моя.

Когда я пытаюсь обходной путь, я получаю сообщение об ошибке.

Есть ли способ решить это? Это известная проблема?

Это в Windows

0
nl ja de
вы сохранили файл csv как utf8
добавлено автор nilanjan, источник
Это отлично работает на моей машине OS X, возможно, это ошибка в ruby on Windows? Какая именно ошибка?
добавлено автор rdvdijk, источник

1 ответы

Эта ошибка означает, что в ваших данных есть некоторая последовательность байтов utf-8. Если это вас беспокоит, исправьте данные. В противном случае попробуйте ascii-8bit.

0
добавлено
Не уверен, что я неверно отреагировал. Я не получаю сообщение об ошибке. Если я ссылаюсь на первые столбцы, используя session ['col1'], это не сработает. Вторая колонка и другие работают отлично. Для первого столбца мне нужно использовать сеанс [0], т. Е. Я не могу использовать имя столбца
добавлено автор nilanjan, источник
файл utf8 добавляет несколько дополнительных байтов в начале файла. Я думаю, что в результате ruby ​​/ csv неправильно понимает имя первого столбца. Это не проблема с моими данными, я могу воспроизвести ее с любыми данными.
добавлено автор nilanjan, источник
это правда! Смотрите: ru.wikipedia.org/wiki/… Я также понял, что могу сэкономить файл без спецификации. После этого читается работа. Кстати, я мог ошибаться.
добавлено автор nilanjan, источник
Хорошо, но если вы были такими данными, как вы предполагали, код будет работать. Поэтому с вашими данными что-то не так.
добавлено автор pguardiario, источник
Нет, это просто неправда.
добавлено автор pguardiario, источник
вздох. Другими словами, вы исправили данные и теперь это работает.
добавлено автор pguardiario, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков