DarkCoder
@DarkCoder

Кодировка при чтении файлов в Ruby

Задача подсчёта количества слов в файле, подскажите пожалуйста как правильно настроить кодировку в File.read() чтобы русский читался нормально.
код:
def words_from_string(string)
  string.downcase.scan(/[\w']+/)
end

def count_frequency(word_list)
  count = Hash.new(0)
  word_list.each {|word| count[word] += 1 }
  count
end

raw_text = File.read("text.txt") #, encoding: Encoding::UTF_8) #, encoding: "cp1251")
p raw_text

word_list = words_from_string(raw_text)
p word_list

counts = count_frequency(word_list)
p counts

sorted = counts.sort_by { |word, count| -count }
p sorted

top_five = sorted.last(5)
p top_five
top_five.each { |word, count| puts "#{word} #{count}" }
  • Вопрос задан
  • 6953 просмотра
Решения вопроса 1
sl_bug
@sl_bug
Какой версии руби?

open(«data.txt», «w:UTF-16LE») например
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DarkCoder
@DarkCoder Автор вопроса
Отлично я уже на шаг ближе! )
между p и puts есть некоторая разница:
f = File.open("text_ascii.txt", "r:windows-1251")
raw_text = f.gets
puts raw_text.encoding
puts raw_text

Windows-1251
Здравствуйте, уважаемые читатели. Я продолжаю свою серию постов про распределенную систему контроля версий Mercurial.

Только регекспа русские слова не принимает (
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы