Проблемы с кодировкой

Статус
В этой теме нельзя размещать новые ответы.
Столкнулся с такой же проблемой.
Потратил несколько дней на решение вопроса, т.к. очень нужен скрипт. К тому же впереди еще работа по его интеграции с DLE.
Все установлено на системе Win XP SP2, Денвер, MySQL 4.1, PHP5

1. В настройке Rss канала оставляем только сопоставление заголовка. Т.к. было замечено, что именно инфа взятая из рсс ленты сохраняется в БД в кодировке УТФ-8. А без заголовка никак не желает грабиться
2. в файле source.getcontent.php примерно в 350 строках есть инициализация массива с данными, после чего они непосредственно льются в базу.
if (get_magic_quotes_gpc()) {
$item["news_title"] = addslashes($item["news_title"]);
$item["news_text"] = addslashes($item["news_text"]);
$item["news_title"] = iconv('UTF-8', 'Windows-1251', $item["news_title"]);
$item["news_description"] = addslashes($item["news_description"]);
$images[0]['alt'] = addslashes($images[0]['alt']);


поэтому в этом месте мы преобразовываем $item["news_title"] из утф-8 в вин-1251 (выделенно жирным), то же можно сделать и с кратким сожержанием, но если не выставленно сопоставление с рсс лентой, оно и так отображается в вин-1251.
 
OfficeBy написал(а):
Столкнулся с такой же проблемой.
Потратил несколько дней на решение вопроса, т.к. очень нужен скрипт. К тому же впереди еще работа по его интеграции с DLE.
Все установлено на системе Win XP SP2, Денвер, MySQL 4.1, PHP5

1. В настройке Rss канала оставляем только сопоставление заголовка. Т.к. было замечено, что именно инфа взятая из рсс ленты сохраняется в БД в кодировке УТФ-8. А без заголовка никак не желает грабиться
2. в файле source.getcontent.php примерно в 350 строках есть инициализация массива с данными, после чего они непосредственно льются в базу.
if (get_magic_quotes_gpc()) {
$item["news_title"] = addslashes($item["news_title"]);
$item["news_text"] = addslashes($item["news_text"]);
$item["news_title"] = iconv('UTF-8', 'Windows-1251', $item["news_title"]);
$item["news_description"] = addslashes($item["news_description"]);
$images[0]['alt'] = addslashes($images[0]['alt']);


поэтому в этом месте мы преобразовываем $item["news_title"] из утф-8 в вин-1251 (выделенно жирным), то же можно сделать и с кратким сожержанием, но если не выставленно сопоставление с рсс лентой, оно и так отображается в вин-1251.
здорово НО после добавления
$item["news_title"] = iconv('UTF-8', 'Windows-1251', $item["news_title"]);
заголовок пропал впринципе)))

Зато дискрипшен стал русским))
 
Dimonn_s,
а ты для работы с награбленным непосредственно NG используешь? или грабишь в БД какого-то другого движка.
Просто я граблю в таблицу DLE, c родной не проверял..После внесения изменений в код, нужно снести все содержимое из таблицы, т.е. удалить весь награбленный до етого контент, проверь кодировку твоих таблиц в БД.
 
OfficeBy написал(а):
Dimonn_s,
а ты для работы с награбленным непосредственно NG используешь? или грабишь в БД какого-то другого движка.
Просто я граблю в таблицу DLE, c родной не проверял..После внесения изменений в код, нужно снести все содержимое из таблицы, т.е. удалить весь награбленный до етого контент, проверь кодировку твоих таблиц в БД.
Да использую NG ((( ,
а можешь научить как использовать ДЛЕ?
Какое нить небольшое руководство ..что и где править?
Я уверен что тебе многие спасибо скажут...
 
Dimonn_s написал(а):
Да использую NG ((( ,
а можешь научить как использовать ДЛЕ?
Какое нить небольшое руководство ..что и где править?
Я уверен что тебе многие спасибо скажут...

Знаешь, там оказывается все не так сложно...Я использовал совет ASander. Вот, что он писал.
Все, на самом деле, очень просто:
Устанавливаешь NewsGrabber, затем в эту же папку копируешь DLE. Файлы .htaccess и index.php NewsGrabber'а заменяются на соотв. файлы DLE. Ставишь DLE в ту же БД, что и NG. Находишь в папке /admin/cron/ файл source.getcontent.php и меняешь в нем строчку
Код:
$db->query("insert into news (rss_id, groups_id, news_date, news_title, news_trans_title, news_description, news_text, news_guid, news_pubDate, news_link, news_image, news_imagealt, news_active, news_error, news_errormessage, hash) values ('{rss_id}', '{groups_id}', {news_date}, '{news_title}', '{news_trans_title}', '{news_description}', '{news_text}', '{news_guid}', '{news_pubDate}', '{news_link}', '{news_image}', '{news_imagealt}', '{news_active}', '{news_error}', '{news_errormessage}', IF('".$news_active."' = 'checked', '".(empty($images[0]['image_source']) ? "0" : "1").$rss["groups_id"]."', NULL))", $item);
на
Код:
$db->query("INSERT `post` SET `date`={news_date},`short_story`='{news_description}',`full_story`='{news_text}',`title`='{news_title}',`descr`='{news_description}',`category`='{groups_id}'",$item);
Готово!
Лишние скрипты и таблицы из БД можно удалить.
Да, кстати, чтобы новости соответствовали категориям, нужно, чтобы в таблице rss в поле groups_id стояли id соответствующих категорий из таблицы news_category.

Все дефйтвительно работает. В итоге мы получаем в DLE : дату, короткую новость, аннотацию (тоже, что и короткая) и полную новость. Можно еще добавить автора. Для этого необходимо полю author таблицы post имя rss ленты, оно хранитьяс в таблице rss.
При таком варианте все грабить лучше без картинок(Почему? станет понятно, когда сграбишь и посмотришь откуда ДЛЕ пытается взять картинку)..Решить эту проблему не составляет труда, необходимо скорее желание....
 
2 OfficeBy

А У Тебя Получилось Надладить Грабление С Картинками? ....там Просто Разные Папки...и Как Сосотыковать Не Понятно....
Скажите Хоть Куда Смотреть ...
 
Столкнулся с такой же проблемой.
Потратил несколько дней на решение вопроса, т.к. очень нужен скрипт. К тому же впереди еще работа по его интеграции с DLE.
Все установлено на системе Win XP SP2, Денвер, MySQL 4.1, PHP5

1. В настройке Rss канала оставляем только сопоставление заголовка. Т.к. было замечено, что именно инфа взятая из рсс ленты сохраняется в БД в кодировке УТФ-8. А без заголовка никак не желает грабиться
2. в файле source.getcontent.php примерно в 350 строках есть инициализация массива с данными, после чего они непосредственно льются в базу.
if (get_magic_quotes_gpc()) {
$item["news_title"] = addslashes($item["news_title"]);
$item["news_text"] = addslashes($item["news_text"]);
$item["news_title"] = iconv('UTF-8', 'Windows-1251', $item["news_title"]);
$item["news_description"] = addslashes($item["news_description"]);
$images[0]['alt'] = addslashes($images[0]['alt']);


поэтому в этом месте мы преобразовываем $item["news_title"] из утф-8 в вин-1251 (выделенно жирным), то же можно сделать и с кратким сожержанием, но если не выставленно сопоставление с рсс лентой, оно и так отображается в вин-1251.

без "Ссылка на текст новости" грабиться не хочет, с ней - те же крякозябры :confused:
 
незнаю .... у меня и без этой строчки работает, правда меня провайдер перенес на сервак где БД 4хх
 
а как сделать чтобы ссылки нормально составлялись?
 
Берите и сразу втыкайте, если уж не совсем глюк в грабере с кодировкой. Править надо в в строке 348 файла source.getcontent.php

if (get_magic_quotes_gpc()) {
$item["news_title"] = addslashes($item["news_title"]);
$item["news_text"] = addslashes($item["news_text"]);
$item["news_title"] = iconv('UTF-8', 'Windows-1251', $item["news_title"]);
$item["news_description"] = addslashes($item["news_description"]);
$item["news_description"] = iconv('UTF-8', 'Windows-1251', $item["news_description"]);
$images[0]['alt'] = addslashes($images[0]['alt']);
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху