|
|
|
| ЯндексВэбмастер исключил из индекса более сотни страниц, вынеся вердикт "Кодировка не распознана". Этой диагностике Яндекс дает такое разъяснение:
"Кодировка не распознана - Кодировка документа не распознана. Возможно, документ не содержит текста или содержит текст в различных кодировках".
Все страницы как братья-близнецы по своей структуре. Код абсолютно валидный. Начало кода такое:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Америка </title>
<style type="text/css">
body,html{
|
Как бы узнать, что за проблема с кодировкой?
Может, можно как-то протестировать страницу средствами рнр? | |
|
|
|
|
|
|
|
для: Владимир55
(04.03.2010 в 13:08)
| | В заголовке отклика что выдается?
Не в левом куске тела, а в поле Content-Type заголовка?
Оное обычно определяется директивой addDefaultCharset в конфиге апача или .htaccess если есть. | |
|
|
|
|
|
|
|
для: Trianon
(04.03.2010 в 22:15)
| | "В заголовке отклика что выдается? "
Как это посмотреть? | |
|
|
|
|
 54.3 Кб |
|
|
для: Владимир55
(04.03.2010 в 23:49)
| | Специальными плагинами к браузерам. Например "web developer" в фаерфоксе. | |
|
|
|
|
|
|
|
для: Саня
(04.03.2010 в 23:56)
| | Ответ более, чем неожиданный - кодировки и правда нет!
Server: nginx/0.7.65
Date: Thu, 04 Mar 2010 21:24:48 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.12
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
200 OK
|
И как это понимать?
Придется поискать addDefaultCharset ... | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 00:27)
| | >Ответ более, чем неожиданный - кодировки и правда нет!
>И как это понимать?
>Придется поискать addDefaultCharset ...
Придется поставить addDefaultCharset ... | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 01:00)
| | Тут нюанс в том, что некоторое время назад я удалил ddDefaultCharset, ибо иначе не работал Аякс (поскольку сайт в 1251).
Вот как теперь быть??! | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 01:09)
| | Аякс действительно очень плохо сопрягается с 1251.
Но ведь addDefaultCharset действует лишь на те скриптом порождаемые документы, в которых Content-Type не формируется явным образом.
По-моему, аяксовых обработчиков не должно быть настолько много, чтобы совсем невозможно было в них добавить явное указание типа контента с расово верной кодировкой utf-8 .
Или у Вас и тексты аякс-обработчиков тоже скриптами создаются миллионными тиражами? | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 01:16)
| | Да, тиражируются.
Скрипт вызова такого вида:
<?php
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>';
echo <<<TEXT
<div id="content"></div>
<script src="../../../jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.get("../../ajax-1.php?fam=$famm", function(data){
$('#content').html(data);
});
</script>
TEXT;
|
А вызывает он примерно это:
<?php
$data = '<p class="s10s">Алфавитный рейтинг:</p>';
echo $data = iconv('cp1251', 'utf-8', $data);
|
Вы имеете в виду, что страницы, использующие аякс, переделать под utf-8?
Это была бы катастрофа... | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 01:38)
| | >А вызывает он примерно это:
> $data = '<p class="s10s">Алфавитный рейтинг:</p>';
> echo $data = iconv('cp1251', 'utf-8', $data);
А более точно? | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 01:55)
| | А прямо так оно и есть.
Вся страница написана в 1251, и лишь несколько фрагментов текста (три фрагмента), которые не должны видеть поисковики, вставляются через яакс.
Получается так:
Заголовок страницы, включая DOCTYPE и charset=windows-1251.
Текст 1251
Вызов Аякс
Текст 1251
Вызов аякс
Текст 1251
Вызов Аякс
Текст 1251 | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 02:14)
| | прямо так быть не может. потому что между html-кодом и php-кодом еще есть теги обрамления php . как минимум. | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 02:16)
| | На странице 600 строк, плюс инклуды. Я бы привел ее полностью, но громоздко и даже собрать сходу не могу. Выборку с тегами попробую. | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 02:20)
| | меня бы вполне устроило
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<?php
$data = '<p class="s10s">Алфавитный рейтинг:</p>';
echo $data = iconv('cp1251', 'utf-8', $data);
?>
<html>
|
и я бы ответил:
<?php
header('Content-type: text/html; charset="utf-8"'); // !!!!!!!!!!
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<?php
$data = '<p class="s10s">Алфавитный рейтинг:</p>';
echo $data = iconv('cp1251', 'utf-8', $data);
?>
<html>
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 02:27)
| | У меня все же не так. Вот в сокращенном виде:
<?php
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>';
echo "ТАЙТЛЫ";
echo '</title>
<link href="../../../styl.css" rel="stylesheet" type="text/css">
</head>
<body>';
include "../../../db-st.php" ;
echo '<table class="dva" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<H1>', $famr, ' </H1>
<H2>', $mt[$nt2], ". ", $mt[$nt1], ".", ' </H2>
</td>
</tr>
</table>';
$famm = rawurlencode($famr);
echo <<<TEXT
<div id="content"></div>
<script src="../../../jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.get("../../ajax-1.php?fam=$famm", function(data){
$('#content').html(data);
});
</script>
TEXT;
echo '
<div align="center">
<table border="0" id="table6" style="border-collapse: collapse">
<tr>
<td>';
for ($i=0; $i < count ($m_1); $i++)
echo '<p class="s10"><span class="s8">', $m_1[$i], '</span> - ', $m_2[$i], ' (', $m_3[$i], ', ', $m_4[$i], ', ', $m_5[$i], '),</p>';
echo '
</td>
</tr>
</table>
</div>';
echo <<<TEXT
<div id="content2"></div>
<script type="text/javascript">
$.get('../../ajax-2.php', function(data){
$('#content2').html(data);
});
</script>
TEXT;
echo '
<div align="center">
<table border="0" id="table7" style="border-collapse: collapse">
<tr>
<td><p class="s10">', $re[0], '</p></td>
<td><p class="s10">', $re[50], '</p></td>
</tr>
</table>
</div>';
?>
</body>
</html>
|
А вызываемые файлы такие:
<?php
$data = '<p class="s10s">Алфавитный рейтинг:</p>';
echo $data = iconv('cp1251', 'utf-8', $data);
|
| |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 02:30)
| | мету выкинуть в задницу.
Редактор, который без меты жить не может, выкинуть в задницу.
header поставить сразу после <?php | |
|
|
|
|
|
|
|
для: Trianon
(05.03.2010 в 02:34)
| | Именно
header('Content-type: text/html; charset="utf-8"');
То есть, страница перейдет в кодировку utf-8 ? | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 02:37)
| | Вы вроде как в момент времени (05.03.2010 в 00:27) некий струмент для проверки надыбали...
Так проверьте чтоли... | |
|
|
|
|
|
|
|
для: Владимир55
(04.03.2010 в 13:08)
| | ИМХО, делаю на многих проектах не-было НИКОГДА проблем :
addDefaultCharset вообще не трогать закоментировать #
Перевести всё в utf-8 без BOM --пропадут ВСЕ проблемы (особенно актуально будет в php 6) и с аяксом тоже.
Оптимальный DOCTYPE на сегодня :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
В точке входа принудительно прописать хидер кодировки header('Content-Type: text/html; charset=utf-8');
Ну и естественно переконвертировать БД в новую кодировку.
Указать конект mysql_query("SET NAMES 'utf8'");
Сохранять все документы в utf-8 без BOM
Мне больше нравится инструмент LiveHTTPHeaders
https://addons.mozilla.org/ru/firefox/addon/3829?src=reco | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 02:22)
| | Не могли бы Вы привести пример всей страницы, выполненной на utf-8 ?
Что бы там были тайтлы и хотя бы пара строк текста (без базы). | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 14:22)
| | Точка входа ,куда посредством сервера перекидываем все запросы к сайту
index.php
<?php
header('Content-Type: text/html;charset=utf-8'); // Кодировка
header ('Expire: Mon, 4 Apr 1995 01:01:01 GMT'); // Дата в прошлом
header('Cache-Control: no-cache, must-revalidate'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.1
header('Last-Modified: '.gmdate('D, d M Y H:i:s').'GMT'); // Последнее изменение
// разные подключения
include_once ('data/get_magic_quotes.php');// Обработка "магических" кавычек суперглобальных массивов
include_once ('config.php');// Файл конфигурации
include_once ('data/mysql_connect.php');// Соединение с базой данных
// контролер
................
ob_start();//включаем буферизацию вывода
// Подключаем шаблон морды
if (file_exists('templates/_home.php'))include_once('templates/_home.php');
.....................
|
_home.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Наша главная страничка</title>
<base href="<?php echo DIR_WEB_ROOT ?>" />
<meta name="title" content="........" />
<meta name="Description" content="........"/>
<meta name="Keywords" content=".........."/>
<meta name="Robots" content="index,follow" />
<meta name="Resource-type" content="document" />
<link rel="icon" href="<?php echo DIR_WEB_ROOT ?>favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo DIR_WEB_ROOT ?>favicon.ico" type="image/x-icon" />
<style type="text/css">
<!--
/* GENERAL */
*{margin:0;padding:0;}
html{font-size:100.01%;} /* - установили шрифт стандартного размера (16px). */
body{
font-size:62.5%;/* устанавливаем размер шрифта в 10px.*/
font-family:Verdana,Arial,Helvetica,sans-serif;
}
li{ list-style-type: none;}
img{ border: 0;}
..............
-->
</style>
</head><body>
Текст Текст Текст Текст Текст
</body></html>
|
| |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 16:41)
| | Как полагаете, является ли верным такой код:
<?php
header('Content-type: text/html; charset="utf-8"');
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>';
$data = 'НАСТРоЙКа';
echo iconv('cp1251', 'utf-8', $data);
echo '</title>
<link href="../../../styl.css" rel="stylesheet" type="text/css">
</head>
<body>';
$data = 'Фраза в теле страницы';
echo iconv('cp1251', 'utf-8', $data);
echo <<<TEXT
<div id="content"></div>
<script src="../jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$.get("../ajax-1.php", function(data){
$('#content').html(data);
});
</script>
TEXT;
|
При этом в файле ajax-1.php
<?php
$data = 'Фраза из Ajax';
echo $data = iconv('cp1251', 'utf-8', $data);
|
При отдаче страницы кодировка в заголовке присутствует.
(У меня такое впечатление, что если в .htaccess вписать
AddDefaultCharset On
AddDefaultCharset UTF-8
| то header становится излишним.) | |
|
|
|
|
|
|
|
для: Владимир55
(05.03.2010 в 19:12)
| | Да можно воспользоваться .htaccess
# Выставляем кодировку UTF-8
AddDefaultCharset UTF-8
|
хидеры не нужны.
Старайтесь всё что можно отдавать ХТМЛом не взваливать на плечи php, лишняя нагрузка ,да и хередок не использовать по возможности . | |
|
|
|
|
|
|
|
для: oliss
(05.03.2010 в 22:55)
| | Я вот никак не могу понять, почему у Вас работает
<title>Наша главная страничка</title>
|
Если страница в UTF-8, то должно быть нечто нечитаемое.
Разве не так? | |
|
|
|
|
 39.5 Кб |
|
|
для: Владимир55
(06.03.2010 в 09:10)
| | Просто сам документ (скрипт) надо сохранять в кодировке UTF-8. | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 10:47)
| |
Просто сам документ (скрипт) надо сохранять в кодировке UTF-8.
|
Вот этого я никак не могу понять.
Открыл редактор (Дремвавер), создал эту страничку, при сохранении редактор подсказывает форму приведения к юникоду без BOM. Свойства у странички такие же, как и приведенные Вами.
Но русский текст в сохраненном файле читается обычным блокнотом также, как если бы была кодировка 1251.
Вообще, что значит "сохранить в кодировке"?
Я, как бы, всего лишь жму сохранить файл и даю ему имя. Что в нем есть, то и сохраняется. А что ещё можно сделать? | |
|
|
|
|
 36.2 Кб |
|
|
для: Владимир55
(06.03.2010 в 11:05)
| | Вот панель дрима
Блокнот забудьте как страшный сон .он не работает с утф
Хотите нормальный блокнот --- Notepad++ | |
|
|
|
|
 54.8 Кб |
|
|
для: oliss
(06.03.2010 в 18:52)
| | Начальные установки дрима | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 18:57)
| | Да, у меня тоже так.
Спасибо. | |
|
|
|