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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нарушение кодировки при работе с AJAX [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как перекодировать UTF-8 в WIN?
valenok Модератор
Отправлено: 19 Июня, 2007 - 13:51:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




зачем - мне так удобней
чего - то что от вашего отличается.

Ключевой момент:
PHP:
скопировать код в буфер обмена
  1.  
  2. принимаемые данные деодировать decodeURI()
  3. var your_ServerResponse_text = decodeURI(req8.responseText);
  4.  
  5.  Отправлять надо данные обработав их  encodeURIComponent()
  6. req8.send('text='+encodeURIComponent(anything));
  7.  


-----
Truly yours, Sasha.
 
My status
 Top
Yuriy
Отправлено: 24 Июня, 2007 - 12:34:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007  
Откуда: Азов


Помог: 0 раз(а)




Не ожидал… Теперь проблема выскочила в обратную сторону. Я отсылаю через GET просто число. На сервере я получаю по этому числу нужные данные, и они русским текстом возвращаются к клиенту. Вывод получается в виде «?????». Английский текст, как всегда, в норме. В чём опять дело-то? В Oper’е всё нормально, а IE выводит «???». Что делать? Через сервера кодировать, а клиентом раскодировать?


-----
Yuriy
 
 Top
valenok Модератор
Отправлено: 24 Июня, 2007 - 14:32:48
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. принимаемые данные деодировать decodeURI()
  3.  var your_ServerResponse_text = decodeURI(req8.responseText);  
  4.  
  5.   Отправлять надо данные обработав их  encodeURIComponent()  
  6.  req8.send('text='+encodeURIComponent(anything));
  7.  




-----
Truly yours, Sasha.
 
My status
 Top
Yuriy
Отправлено: 24 Июня, 2007 - 16:24:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007  
Откуда: Азов


Помог: 0 раз(а)




valenok, мне ничего не надо кодировать, отправляя данные. Что, 1..50 кодировать? Нет смысла. Я же другое просил. Например, сервер даёт вот это:

echo "Русский текст";

Выводится это в виде "?????".

Что делать? Нужно как-то закодировать это на сервере и раскодировать у клиента.


-----
Yuriy
 
 Top
valenok Модератор
Отправлено: 24 Июня, 2007 - 16:34:31
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А вот прочитать нужную часть от этого нельзя?:

PHP:
скопировать код в буфер обмена
  1.  
  2.  принимаемые данные деодировать decodeURI()  
  3.   var your_ServerResponse_text = decodeURI(req8.responseText);  
  4.    
  5.    Отправлять надо данные обработав их  encodeURIComponent()  
  6.   req8.send('text='+encodeURIComponent(anything));  
  7.  


-----
Truly yours, Sasha.
 
My status
 Top
Yuriy
Отправлено: 24 Июня, 2007 - 17:34:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007  
Откуда: Азов


Помог: 0 раз(а)




Да декодировал сто раз до того, как сюда писал. IE пишет:

Системная ошибка: -1072896748


-----
Yuriy
 
 Top
valenok Модератор
Отправлено: 25 Июня, 2007 - 09:17:07
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. <META http-equiv=Content-Type content="text/html; charset=???">
  2.  
  3. <?xml version="1.0" encoding="???"?>
  4.  
  5. req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=???");
  6.  
  7. header("Content-type: text/plain; charset=???");


Я бы поставил UTF-8, но если всё ещё не работает то windows-1251


-----
Truly yours, Sasha.
 
My status
 Top
Yuriy
Отправлено: 25 Июня, 2007 - 11:05:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007  
Откуда: Азов


Помог: 0 раз(а)




Написал перед req9.send(); строку

req9.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

не работает. С windows-1251 также не работает.

Yuriy пишет:
IE пишет:

Системная ошибка: -1072896748


Ругается на эту строку:

PHP:
скопировать код в буфер обмена
  1.  
  2. function processReqChange_9()
  3. {      
  4.    if(req9.readyState==4 && req9.status==200)
  5.    {
  6.       document.getElementById('div_1').innerHTML = req9.responseText; // <= error
  7.    }
  8. }


Ладно. Как в старые добрые времена. Мой код:

index.html

PHP:
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.  
  4.  <script language="JavaScript">
  5.      function processReqChange_9()
  6.     {          
  7.     if(req9.readyState==4 && req9.status==200)
  8.     {
  9.         document.getElementById('div_1').innerHTML = req9.responseText;
  10.     }
  11.   }
  12.   function multi_call9(arg1)
  13.   {
  14.     if(window.XMLHttpRequest)
  15.     {
  16.       req9 = new XMLHttpRequest();
  17.       req9.onreadystatechange = processReqChange_9;
  18.       req9.open("GET",arg1, true);
  19.       req9.send(null);
  20.     } else if (window.ActiveXObject)
  21.     {
  22.       req9 = new ActiveXObject("Microsoft.XMLHTTP");
  23.       if (req9)
  24.       {
  25.         req9.onreadystatechange = processReqChange_9;
  26.         req9.open("GET",arg1, true);
  27.         req9.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
  28.         req9.send();
  29.       }
  30.     }
  31.   }
  32.  </script>
  33.  </head>
  34.  
  35.  <body>
  36.  
  37.  <input type="button" value="Button" onClick="multi_call9('test.php?a=1');">
  38.  <br/>
  39.  <div id="div_1"></div>
  40.  
  41.  </body>
  42.  </html>


test.php

PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. echo "Вы отослали ",$_GET['a'];
  4.  
  5. ?>


Спасибо за помощь.\n\n(Добавление)
C Сашей решили проблему. Нужно в файле test.php дописать строку

header('Content-Type: text/html; charset=windows-1251');

За что ему большое спасибо!


-----
Yuriy
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB