Показать сообщение отдельно
  #20 (permalink)  
Старый 10.03.2015, 04:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Оставьте в покое defaultCharset, зачем она вам нужна?

Вам нужно проверить что возвращает сервер, судя по файлу test.php все нормально. Осталось проверить как принимает сервер, возможно у вас на сервере русский Апач, с которым бывают проблемы (или связка Apache+nginx, и отдает не Apache, а nginx).

Запустите (два файла раздельных, хотя количество роли не играет, что с одного проверять, что с раздельных, без разницы). Ремируйте в htaccess добавление кодировки, и будем считать, что на сервере в настройках она не определена по умолчанию, определять ее будет непосредственно переданный заголовок. НИКАКИХ метатегов о кодировке в документе чтобы не было, document.charset не интересует, тем более что в данном случае это значение может быть и не определено.

<?
header('Content-type: text/html; charset=utf-8');
?>
<!DOCTYPE HTML> 
<html> 
<head>
<script src="https://code.jquery.com/jquery-1.11.2.js"></script>
<script>
$(function() {
    $('form').submit(function() {
        $.post('2.php', $(this).serialize(), function(d) {
            alert(d)
        });
        return false;     
    })
});
</script>     
</head> 
<body>
<form>
<input name="as" value="Текст" />
<button>Отправить</button>
</form>
</body>
</html>


Это тот кто отвечает на запрос. Его задача - детектирование кодировки запроса и выдача результата.

<?php
$char = detectEncoding($_POST['as']);

header('Content-type: text/html; charset=utf-8');
exit('Кодировка: ' . $char . ', ' . $_POST['as']);

function detectEncoding($s) {  
    $enc = array('utf-8', 'windows-1251', 'windows-1252'); 
    foreach($enc as $v) { 
        $chk = iconv($v, $v, $s); 
        if(md5($chk) == md5($s)) return $v; 
    } 
    return 'Не определено'; 
}
?>


Проверяйте, и каков результат?

Последний раз редактировалось laimas, 10.03.2015 в 06:20.
Ответить с цитированием