joost

Рейтинг
844
Регистрация
08.06.2006

делаю парсинг

http://www.njcar.ru/prices-partners/barnaul/renault/duster/all

там вин1251

у меня

файл скрипта в ютф

конект с БД mysql_query("SET NAMES 'utf8' ");

поля в таблице и сама таблица utf8_general_ci

в скрипте $a->plaintext = iconv("windows-1251","UTF-8//TRANSLIT//IGNORE",$a->plaintext);

в БД часть текста в крякозябрах, а часть нормально

следовательно - не весь текст страницы вин1251

ок

делаю

$a->plaintext = iconv("windows-1251","UTF-8//TRANSLIT//IGNORE",$a->plaintext);

в БД русские буквы Продажа

---------- Добавлено 17.11.2017 в 14:58 ----------

LEOnidUKG:
Ничего не надо определять или смотреть

парсинг разных сайтов идет

там указано windows-1251

а определяется как ASCII

может в этом проблема?

modelist:
joost, в таком случае только если кодировка не utf-8, то надо определять кодировку именно этого текста и конвертировать именно из его кодировки в utf-8.

if (mb_detect_encoding($a->plaintext)!='utf-8')

$a->plaintext = iconv(mb_detect_encoding($a->plaintext),"UTF-8//TRANSLIT//IGNORE",$a->plaintext);

но все что не ютф в БД не пишет

п.с. с указанием списка кодировок аналогично

---------- Добавлено 17.11.2017 в 14:50 ----------

LEOnidUKG:
По-моему что-то там не ладное или проблема решается не с того бока.

Определение кодировки в PHP и так кривое, а уж разные куски и такие выкрутасы она будет показывать бред.

делаю парсинг

http://www.njcar.ru/prices-partners/barnaul/renault/duster/all

LEOnidUKG:
Определять кодировку по кусочку текста это неблагодарное дело

так там разных кусков текста разная кодировка

задача по сути такая

у меня все в utf-8

данные могут поступать в самых разных кодировках

их нужно перекодировать в utf-8

тогда выводит корректно

но есть проблемы

если делать $a->plaintext = iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

то проблема с текстом в windows-1251 - его в БД не записывает

если

if (mb_detect_encoding($a->plaintext)!='utf-8')

$a->plaintext = iconv("windows-1251","UTF-8//IGNORE",$a->plaintext);

if (mb_detect_encoding($a->plaintext)=='utf-8')

$a->plaintext = iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

то текст в utf-8 в БД пишется в крякозябрах

так и есть

в БД пишет нормально

повылазили Notice: iconv(): Detected an illegal character in input string

начал копать

---------- Добавлено 17.11.2017 в 12:08 ----------

эти ошибки возникают на таком тексте "л.с.", "км.","руб."

и еще Detected an incomplete multibyte character in input string возникает

в коде у меня

iconv(mb_detect_encoding($a->plaintext, "utf-8,windows-1251"), "UTF-8//IGNORE",$a->plaintext);

что влияет на эту самую "видимость" ?

отпишитесь как у Вас индексация "Размещение статей с картинками в блогах

(250 шт.)"

Всего: 3839