Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кириллицей при парсинге веб-страниц, и в Windows, и в Linux 
:(
    Опции темы
Sahon
Дата 5.7.2012, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 14.3.2011
Где: Украина

Репутация: нет
Всего: нет



Код Ruby:
Код
require 'open-uri'
# coding: utf-8
page = open('http://bus.com.ua/')
text = page.read

city = text.scan(%r{names.html" title="Станции по алфавиту">(.*)</a></td><td>0432671342</td><td>})
puts "Karma = #{city}"


Выдает ошибки:
Код
Parser.rb:6: invalid multibyte char (US-ASCII)
Parser.rb:6: invalid multibyte char (US-ASCII)
Parser.rb:6: syntax error, unexpected $end, expecting ')'
...t.scan(%r{names.html" title="Станции по алфав�...
...                               ^





Помогите исправить.

P. S. Кодиковка файла - UTF-8

Это сообщение отредактировал(а) Sahon - 5.7.2012, 12:56
PM MAIL Skype   Вверх
Rikkit
Дата 6.7.2012, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 19.7.2011

Репутация: нет
Всего: нет



Кодировку нужно указывать в самом верху файла, выше чем require.
PM MAIL   Вверх
Sahon
Дата 6.7.2012, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 14.3.2011
Где: Украина

Репутация: нет
Всего: нет



Цитата(Rikkit @ 6.7.2012,  11:45)
Кодировку нужно указывать в самом верху файла, выше чем require.

Это сработало, но появилась другая ошибка:
Код
Parser.rb:6:in `scan': incompatible encoding regexp match (UTF-8 regexp with Windows-1251 string) (Encoding::CompatibilityError)
    from Parser.rb:6:in `<main>'


Перевод:
Код
Parser.rb:6:в `scan': несоответсвующая кодировка в регулярном выражении (регулярное выражение в UTF-8 и строка в Windows-1251) (Кодировка::ОшибкаСовместимости)
    из Parser.rb:6:в`<main>'


Как это побороть?
PM MAIL Skype   Вверх
WarHog
Дата 17.7.2012, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Ну файл у тебя в utf-кодировке, а страница - в windows-1251.  У тебя два варианта - либо смени кодировку файла со скриптом на windows-1251, либо после прочтения страницы в String конвертни ее т.о.:
Код

  text =  page.read.encode("utf-8")

И это... Не надо html регэкспами парсить. Возьми nokogiri.
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.