Почему PHP utf8_encode нарушает мою строку utf-8? - PullRequest
0 голосов
/ 07 октября 2010

Я делаю что-то вроде обходного эксперимента, где я извлекаю данные из таблиц на удаленной странице, чтобы превратить их в ICS, чтобы я мог узнать, когда играет эта спортивная команда (потому что я не могу найти везде, где информация более доступна, чем в этой таблице), но это просто для того, чтобы дать вам некоторый контекст.

Я получаю эти данные, используя cURL, и анализирую их, используя domDocument. Затем я беру и анализирую информацию, которая мне нужна. Что доставляет мне неприятности, так это команда соперников. Когда я отображаю данные на начальной странице PHP, это правильно. Но когда я пишу в файл ICS, специальные символы UTF-8 портятся. Я думал, что utf8_encode решит эту проблему, но на самом деле, похоже, это имеет противоположный эффект: когда я запускаю функцию на моих данных, даже материал, отображаемый на странице (который отображался правильно), а не в отдельном файле ICS (который писал неправильно), неверно. Как пример: он превращает «Inđija» в «InÄija».

Какие-нибудь советы или ресурсы, касающиеся работы со строками UTF-8 в PHP? На моем сервере (удаленном хосте) также не установлен mbstring, что является проблемой.

1 Ответ

3 голосов
/ 07 октября 2010

utf8_encode кодирует строку в ISO 8859-1 как UTF-8.Если вы поместите в него UTF-8, он будет интерпретировать его так, как если бы он был ISO 8859-1, и, следовательно, будет производить mojibake.

Чтобы помочь с вашей первой проблемой, до этого я хотел бы знать,какие «специальные» символы запутались в исходной задаче и каким образом они запутались?

...