Итак, я, как я понимаю, моя проблема в том, что file_get_contents () не отправляет надлежащий URL UTF-8, даже если он передается, поэтому данные $ _GET, которые получает сервер, немного испорчены. Часть моего кода:
//receiving post data from html form "nacionālā opera"
$q = $_POST["q"];
if (!empty($q)) {
$get_data = array(
'http' => array(
'header'=> array("Content-Type: text/plain; charset=utf-8",
"User-agent: PHP bots;")
)
);
$stream_cont = stream_context_create($get_data);
$search = str_replace(" ", "+", $q);
$url = 'http://127.0.0.1/test.php?stotele='.$search.'&a=p.search&t=xml&day=1-5&l=lv';
if (mb_detect_encoding($url) === 'UTF-8') {
echo '$url encoding is ok...??';
} else {
echo 'URL encoding not UTF-8!';
exit();
}
$rec_data = file_get_contents($url, false, $stream_cont);
Вот что получает сервер при печати массива $ _GET:
stotele => nacionÄ_lÄ_ opera // this should have been "nacionālā opera", but as u see it got distorted
a => p.search
t => xml
day => 1-5
l => lv
Надеюсь, вы понимаете, что я пытаюсь сказать. Эта вещь сводит меня с ума, и я не могу ее решить, было бы неплохо, если бы кто-то дал мне подсказки (и да, кодировка моего браузера установлена на UTF-8, форма также отправляет UTF-8, и если я отображаю $ q или $ search или $ url Я получаю обычную строку, а не некоторые испорченные символы.