Кодировка файла (мистика).

B
На сайте с 31.01.2012
Offline
125
344

Привет, третий час не могу победить.

Читаю при помощи php:

http://katren.ru/Partnerweb/AptekaYandex/PharmacevtikaRu/Apteka.Ru_yaroslavskaya-oblast_price.xml

(осторожно, 35Мб).

При попытке перекодировать php iconv в utf-8 ругается

iconv(): Detected an illegal character in input string in

функции preg_math не срабатывают.

Есть подозрение, что кодировка не соответствует. Но как определить - какая в файле?

Кодировка сервера utf-8. Кодировка php файла utf-8.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

Так... PHP код покажите конвертации.

И читаете файл как?

Код покажите короче.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
B
На сайте с 31.01.2012
Offline
125
#2

Файл должен быть виндовс

<?xml version="1.0" encoding="windows-1251"?><!DOCTYPE yml_catalog SYSTEM "shops.dtd">

Но все равно, даже если не перекодировать - он не читается. Никак. Даже простое echo выводит каракозабры.

И с iconv и без него... (если предположить, что он utf-8)

Но текстовым редактором любым открывается.

читаю так:

$url = "http://katren.ru/Partnerweb/AptekaYandex/PharmacevtikaRu/Apteka.Ru_yaroslavskaya-oblast_price.xml";

$file=file_get_contents($url);

//$file = iconv ("CP1251", "UTF-8//IGNORE//TRANSLIT", $file);

echo $file;

MT
На сайте с 17.01.2017
Offline
22
#3
bondarenkosss:
Но все равно, даже если не перекодировать - он не читается. Никак. Даже простое echo выводит каракозабры.

Отсюда можно сделать вывод, что по ссылке отдаётся не xml, а какая-то битая дрянь. Вариант решения проблемы довольно прост - пишете администратору сайта и просите проверить этот файл.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4

Ясно. Переставайте читать удалённые файлы через file_get_contents, это мой вам совет.

function curl_gets($url){

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);

curl_setopt($ch, CURLOPT_ENCODING, 1);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)');

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

$url = "http://katren.ru/Partnerweb/AptekaYandex/PharmacevtikaRu/Apteka.Ru_yaroslavskaya-oblast_price.xml";

$file=curl_gets($url);

$file = iconv ("CP1251", "UTF-8//IGNORE//TRANSLIT", $file);

echo $file;

У вас там gzip включен.

---------- Добавлено 13.03.2018 в 11:45 ----------

Отсюда можно сделать вывод,

Что лучше молчать, чем говорить :)

B
На сайте с 31.01.2012
Offline
125
#5

Да, шайтанама, заработола!! LEOnidUKG, я бы низачто не догадался бы, что они в заархивированном виде стали отдаваться.

Спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий