Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отправка UTF 8 из IE в php
Форумы портала PHP.SU » » Кодировки и все смежное » Отправка UTF 8 из IE в php

Страниц (1): [1]
 

1. Delovoy - 19 Ноября, 2012 - 17:12:49 - перейти к сообщению
Столкнулся с непонятной для себя задачаей

AJAX запрос, который отправляет из браузера имя фамилию и отчество клиента не работает в IE 8

Точнее работает, но передает данные в какой-то странной кодировке
Тот же самый механизм в FireFox все передает корректно

При просмотре через отладчик в php скрипте получаемые данные выглядят как
�����

Из браузера отправляю данные с помощью jquery.ajax

CODE (javascript):
скопировать код в буфер обмена
  1. $.ajax({
  2.             type: "GET",
  3.             headers: {
  4.                 "Accept" : "application/json, text/javascript, */*; q=0.01",
  5.                 "Accept-Language": "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
  6.                 "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
  7.                 "User-Agent": "Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0"
  8.             },
  9.             data: dataparam,
  10.             url: url,
  11.             cache: false,
  12.             dataType: "json",
  13.             success: function(response){
  14.                alert(response['res_code']+' text: '+response['res_text']);
  15.  
  16.             },
  17.             error: function(response, oberr, ErrMsg) {
  18.  
  19.                 alert(ErrMsg);
  20.             }
  21.         });


На всякий случай даже User-Agent выставил принудительно как Mozilla/5.0 ...
не помогло

посмотрел отправляемые заголовки, все одинаково за исключением данных

IE
GET /Webserver/tcis_ajax_mytest.php?&FName=Иванов&LName=Петров&MName=Сидоров&_=1353336288640 HTTP/1.1

FF
GET /Webserver/tcis_ajax_mytest.php?&FName=%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2&LName=%D0%9F%D0%B5%D1%82%D1%80%D0%BE%D0%B2&MName=%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2&_=1353336233998 HTTP/1.1

Какие есть предположения ?
2. caballero - 19 Ноября, 2012 - 17:17:39 - перейти к сообщению
предположение простое - не выставил кодировку страницы

PHP:
скопировать код в буфер обмена
  1.   Header("Content-Type: text/html;charset=UTF-8");
3. EuGen - 19 Ноября, 2012 - 17:18:59 - перейти к сообщению

+
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');

+
encodeURI
?
4. Delovoy - 19 Ноября, 2012 - 17:20:57 - перейти к сообщению
В самой странице стоит кодировка

CODE (html):
скопировать код в буфер обмена
  1. <head>
  2.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. ...


но насколько я понимаю, если в ajax я явно указываю, что отправлять в utf-8 то что стоит в самой странице, не так важно

Проблема пока остается
(Добавление)
EuGen пишет:
header('Content-type: text/html; charset=utf-8');


У меня в header на php стоит возвращать Content-Type: application/json;
Т.к. в ajax запросе также стоит json

Но проблема возникает не в момент отправки данных из php через ajax на клиента, а раньше в момент получения из ajax

Причем только в IE
(Добавление)
Помогло принудительное кодирование на клиенте - функция encodeURIComponent

тему можно закрывать
5. caballero - 19 Ноября, 2012 - 18:10:27 - перейти к сообщению
Цитата:
Но проблема возникает не в момент отправки данных из php через ajax на клиента, а раньше в момент получения из ajax

потому и возникает что не стоит
Цитата:
header('Content-type: text/html; charset=utf-8');

 

Powered by ExBB FM 1.0 RC1