|
|
|
|
|
для: Shiva
(17.09.2007 в 04:21)
| | Просто огромное спасибо за помощь. | |
|
|
|
|
|
|
|
для: Wyfinger
(17.09.2007 в 01:01)
| |
<?php
echo iconv("UTF-8", "windows-1251", "Рто тестовый тексС"); // Это тестовый текс
?>
|
| |
|
|
|
|
|
|
|
для: bronenos
(16.09.2007 в 17:20)
| | Не помогает. все остается по-прежнему.
А нельзя UTF-8 перекодировать в php ? что-то поискал среди функция - не нашел... | |
|
|
|
|
|
|
|
для: Wyfinger
(16.09.2007 в 12:56)
| |
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=windows-1251');
|
| |
|
|
|
|
|
|
|
для: Wyfinger
(16.09.2007 в 12:56)
| | Вы получаете UTF-8. | |
|
|
|
|
|
|
|
для: elenaki
(16.09.2007 в 11:42)
| | Сделал как Вы говорите:
xmlhttp.setRequestHeader('Content-Type', 'text/html; charset=windows-1251');
xmlhttp.setRequestHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
xmlhttp.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0');
var data='nid='+id+'&date='+vdate.value+'&text='+vtext.value;
xmlhttp.setRequestHeader('Content-Length', data.length);
|
Теперь в POST вообще ничего не приходит. Оно и понятно, ведь в тексте могут быть и пробелы и символы &, ? и т.д. Кодировать чем-то надо, функция encodeURIComponent() подходит, она заменяет все кроме _ . ! ~ * ' ( ) алфавита и цифр.
Проблема в том, что в FF я вижу что data содержит: nid=5&date=16.09.2007&text=%D0%A2%D0%B5%D1%81%D..., а на сервере я получаю белиберду, если текст английский - все нормально.
Кто знает в чем дело? | |
|
|
|
|
|
|
|
для: Wyfinger
(16.09.2007 в 11:11)
| | попробуйте не кодировать, а поставить вот такие хедеры:
header("Content-type: text/html; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
|
| |
|
|
|
|
|
|
| Есть вот такой JavaScript код:
function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
var xmlhttp = getXmlHttp();
xmlhttp.open("POST", './ajax.php?ajax=editnews', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.responseText == "ok") {
// Данные обновлены
} else {
alert('ОШИБКА: Данные не приняты сервером (post_news).');
}
};
}
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var data='nid='+id+'&date='+encodeURI(vdate.value)+'&text='+encodeURI(vtext.value);
xmlhttp.setRequestHeader('Content-Length', data.length);
xmlhttp.send(data);
|
Как Вы видите, передаю данные скрипту ajax.php через POST, данные: три значения nid - индекс, т.е. число; date - дата; text - текст сообщения. Первый параметр не нуждается в кодирвании, а вот второй и третий содержат русский текст, поэтому кодирую функцией encodeURI() (это я где-то подсмотрел). Все отлично работает, но в php скрипте:
$nid = (int)$_POST['nid'];
$date = (string)$_POST['date'];
$text = (string)($_POST['text']);
if(!_checkdate($date)) exit;
|
В $text оказывается строка "Рто тестовый текст" (в оригинале "Это тестовый текст"), хотя я ничем ее не раскодировал (по идее должны быть что-то типа %D0%AD%D1%82%D0%BE%20%D1%82). В чем дело? почему оно так, возможно в этом виноват Apache? или как эту строку раскодировать? | |
|
|
|
|