Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > iconv и украинский текст


Автор: migaro 11.6.2014, 12:57
Вот у меня такая ситуация: 
Есть файл в windows-1251 с украинским текстом Мне его надо открыть, перекодировать в utf-8 и записать в файл.
Для перекодирования я решил использовать iconv
Вот мой код:

Код

#encoding: UTF-8
require 'iconv'

file = File.open "data.txt", "r:windows-1251"
data = File.read file
file.close

data = Iconv.conv('windows-1251', 'utf-8', data)

file = File.open "data.txt_", "w:utf-8"
file.puts data
file.close


При отработке пишет: 
zett@ruby-server:~/rubycode/read$ ruby read.rb
read.rb:8:in `conv': "\xCA\xEE\xE6\xED\xE0 \xEB\xFE\xE4\xE8\xED\xE0 \xEC\xE0\xBA"... (Iconv::IllegalSequence) from read.rb:8:in `'

Как это можно вылечить?
Может ли влиять на кодировку "внутри" скрипта системная консольная кодировка?

Автор: migaro 12.6.2014, 00:02
Как чаще всего бывает, решил сам. smile Тему можно закрывать.

Оказывается у японцев все немного иначе..
Вот если на пыхе перекодирование выглядит так:
Код

Iconv.conv('FROM', 'TO', text)


То на Ruby:
Код

Iconv.conv('TO', 'FROM', text)


То есть сначала указывается на что кодируем, а потом только с чего.. ))))))

Надеюсь кому-то поможет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)