Установка iconv для Ruby 1.9.2

Для того, чтобы работать с юниксовой библиоеткой iconv, необходимо добавить её поддержку в Ruby. Оказывается, это не так тривиально. iconv — утилита UNIX (и одноимённая библиотека) для преобразования текста из одной кодировки в другую. Она также портирована под Windows. Утилита iconv конвертирует текст из одной кодировки в другую. Входная кодировка задаётся ключом -f, а выходная — ключом -t. Однако мы будем использовать библиотеку iconv не через вызов консольной команды, а через сам Ruby.Для этого нам придётся удалить Ruby, и скомпилировать его с поддержкой Iconv.

Сам гем ставить не надо, в Gemfile прописывать зависимости тоже! Не делать это:

т.к. мы уже вкомпилили iconv в Ruby.

Для ипользования iconv необходимо подключить его стандартным образом:

Проверяем в irb:

6 Comments

    1. String#encode возвращала мне Encoding::InvalidByteSequenceError а насчёт String.mb_chars не понял, в доке написано “This method has no description. You can help the Ruby on Rails community by adding new notes.”. Что она делает, и как ей можно перекодировать строку. Хочу заметить, что мне нужно было не просто перекодировать строку, а сделать свертку. Т.е. есть символы в UTF, которых нет в ASCII (русские например), и мне надо было заменить их теми, котоыре есть. А это вовсе не тоже самое, что перевести английский текст из UTF в ASCI. Если есть другой способ, буду признателен, если вы его опишите здесь.

  1. А почему не указываешь –with-readline-dir при компиляции?

      1. А по какому принципу вообще указываются параметры для пакетов? В документации написано, что нужен этот параметр. И почему тогда iconv нельзя было так же опустить?

        1. Потому, что руби надо скомпилить вместе с iconv, а вот readline по-моему можно вообще не ставить. Я его на всякий случай написал. Потом выяснилось, что iconv именно как package надо ставит, а не как gem. У вас Iconv.methods показывает методы iconv и convert, до прохождения алгоритма из статьи?

Leave a Comment