У меня есть данные, отправляемые со стороны клиента, которые отправляют их следующим образом:
// $booktitle = "Comí habitación bailé"
$xml_obj = new DOMDocument('1.0', 'utf-8');
// node created with booktitle and added to xml_obj
// NO htmlentities / other transformations done
$returnHeader = drupal_http_request($url, $headers = array("Content-Type: text/xml; charset=utf-8"), $method = 'POST', $data = $xml_data, $retry = 3);
Когда я получаю их на своем конце (через этот drupal_http_request), и я делаю htmlentities, яполучить следующее:
Comí habitación bailé
Что при отображении выглядит как бред:
Comà Habitación Bailé
Что идет не так?
Редактировать 1)
<?php
$title = "Comí habitación bailé";
echo "title=$title\n";
echo 'encoding is '.mb_detect_encoding($title);
$heutf8 = htmlentities($title, ENT_COMPAT, "UTF-8");
echo "heutf8=$heutf8\n";
?>
Запуск этого тестового сценария на компьютере Windows и перенаправление в файл показывает:
title=Comí habitación bailé
encoding is UTF-8heutf8=
Запуск этого в системе Linux:
title=Comí habitación bailé
encoding is UTF-8PHP Warning: htmlentities(): Invalid multibyte sequence in argument in /home/testaccount/public_html/test2.php on line 5
heutf8=