Здравствуйте! У меня возникла следующая проблема. Имеется php-скрипт, который записывает в $_SESSION некоторую информацию в utf-8. Другой скрипт читает $_SESSION и выводит результаты в виде таблицы. PHP: <? @session_start(); $code=$_GET['code']; $price=$_GET['price']; $name=$_GET['name']; $amount=$_GET['amount']; if(isset($_SESSION['cart_count'])) $_SESSION['cart_count']++; else { $_SESSION['cart_count']=1; $_SESSION['cart']=array(); } $_SESSION['cart'][$_SESSION['cart_count']]=array('code'=>$code,'name'=>$name,'price'=>$price, 'amount'=>$amount); ?> PHP: <? ... foreach($_SESSION['cart'] as $k=>$pos) { echo("<TR>"); echo("<TD>"); echo($k); echo("</TD>"); echo("<TD>"); echo($pos['name']); echo("</TD>"); echo("<TD>"); echo($pos['code']); echo("</TD>"); echo("<TD align=\"right\">"); echo($pos['price']); echo("</TD>"); echo("<TD align=\"right\">"); echo($pos['amount']); echo("</TD>"); echo("</TR>"); $sum+=$pos['price']*$pos['amount']; } ...?> При обращении к скрипту через IE6 или IE7 поле $pos['name'] выводится квадратиками (там запись на русском). К полю $pos['code'] в начало добавляется знак "?". В остальных браузерах такой лажи не наблюдается. Изменение кодировок в браузере ничего не даёт - по прежнему квадратики. Все файлы в UTF-8, а в отдаваемой странице содержится: HTML: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> С чем это может быть связано, и как это побороть? Спасибо.
И простите мне моё любопытство, тот кто переместил тему в форум для новичков, очевидно, посчитал вопрос очень простым? Могу я в таком случае попросить поделиться решением?
вот только не надо начинать… файлы сохранены в кодировке utf-8 без BOM? в какой кодировке отдаёт файлы апач? если не юкод, то перед вызовами скриптов надо header('Content-Type: text/html; charset=utf-8');
В каком форуме сидит письмо - не важно. Главное, чтобы ответили. Вопрос: Если на отдаваемой странице, в IE нажать "просмотр в виде html" - там в какой кодировке будет инфа? И ещё вопрос - а експлорер именно автоматически разпознаёт эту страницу как utf-8 ? Или иногда может ошибаться? И ещё - это всё на хостинге происхожид или на рабочем компе?
Были сохранены с BOM. Сейчас попробую переделать. А этот хедер нужен несмотря на наличие указанной meta?
В юникоде. Эксплорер автоматически распознаёт как юникод, вроде не ошибается. Это происходит как на рабочем компе, так и на хостинге. Кроме этого случая, ни разу никаких проблем с кодировкой замечено не было.
Вот, кстати, ещё какой момент. Может быть это важно. К первому скрипту я обращаюсь посредством AJAX-запроса. Может быть Microsoft.XMLHTTP отправляет запрос как-нибудь иначе, и поэтому в остальных браузерах всё нормально?
Сейчас внимательно посмотрел в то, что получает IE. Получается, что весь файл закодирован в utf-8, а проблемная строчка - в ANSI.
ну так переведи в утф http://php.net/mb_convert_encoding или http://www.php.net/manual/ru/function.iconv.php
Проблема в том, что XMLHttpRequest отправляет get-запрос в utf-8, а Microsoft.XMLHTTP - в ANSI. Поэтому стал бы вопрос об определении браузера на стороне сервера... А это большая возня... Решил проблему проще. Стал отправлять запрос POST-ом, а перед вызовом Request.send дописал: [js]Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");[/js] Так работает хорошо. Всем большое спасибо