Официальный сайт студ.городка НГТУ
Программирование и БД » ajax+русские буквы 

#1  18.06.08 19:32

kai
Профиль

ajax+русские буквы

Есть форма. Эта форма заполняется и нажимается кнопка "отправить". Через явускрипт посредством ajax вызывается php скрипт. Этому скрипту передается сообщение, которое было заполнено в форме.
ПРИМЕР:

Код::

<INPUT TYPE=button onclick="requestdatachat('?id=<?echo $nick;?> ')" VALUE="Сказать" STYLE="border-width:1px; border-color:black">

function requestdatachat(params)
 {
name=':'+document.forms[5].message.value;
loadXMLDoc2("add.php"+params+name);
}

function loadXMLDoc2(url) {
 req = null;
if (window.XMLHttpRequest) {
 try {
 req = new XMLHttpRequest();
 } catch (e){}
 } else if (window.ActiveXObject) {
 try {
 req = new ActiveXObject('Msxml2.XMLHTTP');
 } catch (e){
 try {
 req = new ActiveXObject('Microsoft.XMLHTTP');
 } catch (e){}
 }
 }
 if (req) {
 req.onreadystatechange = processReqChange2;
 req.open("GET", url, true);
 req.send(null);
 reqTimeout = setTimeout("req.abort();", 5000);
 } else {
 alert("Браузер не поддерживает AJAX");
 }
 }

На серверной стороне в php странице прописан заголовок. 

Код::

header("Content-type: text/plain; charset=windows-1251");
echo'<?xml version="1.0" encoding="windows-1251" standalone="yes"?>'

Если форму заполнить англ. буквами, то все нормально, а если русскими, то обратно возвращаються всякие ероглефы, то есть, текст в другой кодировке, типа такого "ГўГўГўГўГўГўГўГў"
Как это дело можно исправить?

Offline

#2  18.06.08 19:37

Re: ajax+русские буквы

text/xml

использовать utf-8. 1251 - это атавизм уже

Offline

#3  18.06.08 19:40

kai
Профиль

Re: ajax+русские буквы

да все на 1251 написано, все переписовать что ли?

Offline

#4  18.06.08 19:41

Re: ajax+русские буквы

перекинуть в утф =) кодировщиков уйма

Offline

#5  18.06.08 19:49

kai
Профиль

Re: ajax+русские буквы

wixus, так не конает) Это я в инете прочитал. Еще можно как то через прекодировку и через escape-последовательностей. Но я толком и не понял, как это осуществляется.

Offline

#6  18.06.08 19:57

kai
Профиль

Re: ajax+русские буквы

Antony, в мазиле работает, в IE вообще ничего не выдает(

Offline

#7  18.06.08 20:47

Re: ajax+русские буквы

Вообще все идущие на сервер параметры GET/POST, кроме случая multipart/form-data, кодируются в UTF-8. Не в кодировке страницы, а именно в UTF-8. Поэтому надо придумать какие-то перекодирования. В Опере скрипт свой пробывал? Скорее всего в ИЕ и Опере он будет вести себя по разному, поэтому прийдется ставить проверку на текущую кодировку передаваемого текста.

wixus написал(а):

перекинуть в утф =) кодировщиков уйма

это будет наверно реально проще в том что потом в дальнейшем не будет никакого гемороя.

Исправлено Кощей (18.06.08 20:48)

Offline

#8  18.06.08 21:32

Re: ajax+русские буквы

kai написал(а):

Antony, в мазиле работает, в IE вообще ничего не выдает(

text/xml

мозилла единственная кто понимает что это xml, если ты выдаёшь text/plain

Offline

#9  20.06.08 11:54

kai
Профиль

Re: ajax+русские буквы

Antony, проблему кажись решил с использованием escape и последующим unescape при получении. Вот только одна проблема:

Код::

var somediv = document.getElementById('layer2');
somediv.innerHTML = unescape(req.responseText);

не работает в IE. Это лечится?
При этом проверял под IE, данные приходят.
alert(unescape(req.responseText)); выводит нормальный текст.

Исправлено kai (20.06.08 11:57)

Offline

#10  20.06.08 12:59

Re: ajax+русские буквы

Лёх, попробуй заюзать jQuery

Offline

#11  30.06.08 23:45

Re: ajax+русские буквы

на отдаче отправь хедер с кодировкой вин1251

Offline

Программирование и БД » ajax+русские буквы 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.025 сек.
Выполнено 11 запросов.