Яндекс погода. Из ANSI в UTF-8

123
[umka]
На сайте с 25.05.2008
Offline
456
#11

Так у вас $temp образуется только после preg_match().

Лог в помощь!
PVasili
На сайте с 13.02.2009
Offline
66
#12

Лучше использовать:

mb_convert_encoding ($temp,"UTF-8" ,"Windows-1251")
[umka]
На сайте с 25.05.2008
Offline
456
#13
PVasili:
Лучше использовать:
mb_convert_encoding ($temp,"UTF-8" ,"Windows-1251")

Чем лучше?

Ink-developer
На сайте с 31.01.2009
Offline
138
#14
'[umka:
;9636105']Чем лучше?

iconv часто теряет данные когда в документе встречаются символы в разных кодировках, да знаю что есть тикие фишки как IGNORE и TRANSLIT, но они на разных серверах ведут себя по разному в итоге опять идет потеря данных или обрезание строки. Особо заметно при написании различных парсингов. В итоге тоже везде перешел на mb_convert_encoding.

[umka]
На сайте с 25.05.2008
Offline
456
#15
Ink-developer:
iconv часто теряет данные когда в документе встречаются символы в разных кодировках

Вы имеете в виду ситуацию, когда в конвертируемой строке часть данных в одной кодировке, а часть в другой?

Если да, то это не упущение iconv, а упущение программиста, допустившего смешение кодировок в одной строке.

А iconv лишь выполняет механическую работу и делает это замечательно :)

Ink-developer
На сайте с 31.01.2009
Offline
138
#16
'[umka:
;9636202']Если да, то это не упущение iconv, а упущение программиста, допустившего смешение кодировок в одной строке.

Спору нет, но таких упущений программистов просто масса, я занимаясь вопросами парсинга намучился изрядно с этой iconv, вы правы вина не ее но от этого проблем меньше с ней не станет. Я же не могу повлиять на сторонний сайт в котором смешение кодировок моя задача качественно спарсить данные без потери. Если все операции идут только со своими данными, то iconv отлично справляется.

newseditor
На сайте с 13.11.2006
Offline
123
#17

[umka], после preg_match(). вставил, совсем не показывает не только минус, но и значение температуры.

PVasili, строка вызвала ошибку parse error: syntax error, unexpected T_VARIABLE

[umka]
На сайте с 25.05.2008
Offline
456
#18
newseditor:
[umka], после preg_match(). вставил, совсем не показывает не только минус, но и значение температуры.

$pogoda = file_get_contents('http://export.yandex.ru/weather/?city=хххх');
preg_match('/<temperature>(.*?)<\/temperature>/i',$pogoda,$temp);
$temp[1]=iconv('UTF-8','CP1251',$temp[1]);

$vivod = "<div style=\"float:left;margin-top:18px;font-size:18px;\">
$temp[1] °

Или перед preg_match делаем

$pogoda=iconv('UTF-8','CP1251',$pogoda);

Ещё, кстати, очень рекомендую почитать какую-нибудь книжку про PHP. Вреда точно не будет :)

newseditor
На сайте с 13.11.2006
Offline
123
#19

Ни один вариант не работает. В первом не показывает значение погоды, во втором - все остается по-прежнему: минус в кракозябрах...

В PHP ноль полный, иначе бы не писал здесь. Перед тем как запостить тему, гуглил, пробовал много вариантов, что-то никак не срастется у меня(

newseditor
На сайте с 13.11.2006
Offline
123
#20

Тут мне поддержка хостера (Мастерхост) сообщила, что

Исправить кодировку с помощью iconv не удаётся, т.к. символ "−", передаваемый Яндексом, отсутствует в кодировке cp1251

Что, правда 😮??

123

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