Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: кодировка страницы
 
 автор: Dazzl   (21.07.2011 в 09:42)   письмо автору
 
 

Люди я не хотел повторяться, но cheops мне сказал как-то для новых вопросов новые темы, делаю как он говорит.

Так вот, эта строка, которая определяет шрифт на странице
header("Content-Type: text/html; charset=utf-8");

как с ней быть когда я её прописываю появляются закрашены ромбики вместо слов а когда убираю всё становиться как обычно "читаемое".

Вот мне интересно это строка вообще нужна? и для чего она ? без неё не как? или это по капризу вебмастера?

или есть опасность что очередной пользователь зашедший на страницу без кодировки увидит эти же ромбики?

  Ответить  
 
 автор: cheops   (21.07.2011 в 12:22)   письмо автору
 
   для: Dazzl   (21.07.2011 в 09:42)
 

Это HTTP-заголовок с типом документом и кодировкой. Он сообщает браузеру, что сейчас пойдет HTML-документ в кодировке UTF-8. Если вы передаете документ в другой кодировке - может возникнуть ошибка. Лучше для указания кодировки использовать META-тэг, браузер в первую очередь должен на него ориентироваться.

  Ответить  
 
 автор: f111   (21.07.2011 в 12:44)   письмо автору
 
   для: cheops   (21.07.2011 в 12:22)
 

хороший ответ, даже я ничего не понял

для: Dazzl (21.07.2011 в 09:42)
если у вас "квадратики" значит само собой в вашем скрипте проблемы с кодировкой.

денвер без header("Content-Type: text/html; charset=utf-8"); всегда любой сайт открывает в win1251, так что польза от этого заголовка есть, и порой не только в денвере.

определитесь в какой кодировке будете "программировать", и исправьте под неё все страницы и сами файлы в том числе. (кроме мета тегов на страницах так же требуется указывать кодировку и самих файлов *.php, иначе будут квадраты)

  Ответить  
 
 автор: Dazzl   (21.07.2011 в 13:30)   письмо автору
 
   для: f111   (21.07.2011 в 12:44)
 

Люди значит мне надо И мета теги И header с одинаковой кодировкой. Да, я так делал и сработало тока win1251 (когда прописываю это обоим) а вот когда пишу utf-8 обратно ромбики

  Ответить  
 
 автор: cheops   (21.07.2011 в 13:35)   письмо автору
 
   для: Dazzl   (21.07.2011 в 13:30)
 

1) Попробуйте сначала просто META-тэг.
2) У вас сам текст страницы в какой кодировке сейчас? В UTF-8 или в какой-то другой?

  Ответить  
 
 автор: Dazzl   (21.07.2011 в 13:41)   письмо автору
 
   для: cheops   (21.07.2011 в 13:35)
 

текст сохранен вот так 1251 (ANSI - кириллица)

на других сайтах предлагали сохранить в UTF-8 я попробовал и у меня ромбики заменились на №(%:*"_!№ причём в самом тексте то же

когда я ставлю такое <META HTTP – EQUIV="Content – Type" content="text/html" charset="windows – 1251">

он начинает жаловаться на сессию а именно

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test1.ru\www\as\ludiplay.php:4) in Z:\home\test1.ru\www\as\ludiplay.php on line 9

9-я линия session_start();

  Ответить  
 
 автор: Dazzl   (21.07.2011 в 13:53)   письмо автору
 
   для: Dazzl   (21.07.2011 в 13:41)
 

Нет-нет сори на сессию он жаловался из-за пустых строк, мету поставил работает

  Ответить  
 
 автор: Dazzl   (21.07.2011 в 13:55)   письмо автору
 
   для: Dazzl   (21.07.2011 в 13:53)
 

тока беда в том что когда кодировка неправильная он её игнорирует и сам ставил (думаю это браузер делает)

т.е. я хочу сказать если я ставлю это header("Content-Type: text/html; charset=utf-8");
он показывает ромбики

а еслия напишу так header("Content-Type: text/html; charset=сват4*№Г";)(№РЩАК");
будет все тип топ и поэтому я не знаю что работает из того что я пробую ((

  Ответить  
 
 автор: cheops   (21.07.2011 в 15:07)   письмо автору
 
   для: Dazzl   (21.07.2011 в 13:55)
 

>тока беда в том что когда кодировка неправильная он её игнорирует и сам ставил (думаю это
>браузер делает)
Скорее всего он просто ориентируется в этом случае на META-тэг, где она выставлена правильно, если META-тэга нет, он пытается её распознать сам. Просто нужно указывать ту кодировку, которую используете, как правило, в этом случае проблем не бывает.

  Ответить  
 
 автор: cheops   (21.07.2011 в 15:05)   письмо автору
 
   для: Dazzl   (21.07.2011 в 13:41)
 

Если текст в кодировке 1251, то не нужно отправлять HTTP-заголовок с сообщением, что текст в кодировке UTF-8, именно это несоответствие вызывает ромбики. У вас везде должна быть указана та кодировка, которую вы используете (в HTTP-заголовке и в META-тэге, обычно достаточно одного из них).

Если используете UTF-8 внимательно следите, чтобы в начало файла редактор не поместил признак UTF8-файла BOM, он часто приводит к такой ошибке, о которой вы пишите. Признак это часто невидим - не все редакторы его показывают.

  Ответить  
 
 автор: Dazzl   (21.07.2011 в 15:51)   письмо автору
 
   для: cheops   (21.07.2011 в 15:05)
 

ещё вопросик вот посмотрите

<META HTTP – EQUIV="Content – Type" content="text/html" charset="windows – 1251">
<?php
error_reporting(E_ALL & ~E_NOTICE);
if ($_POST['rat']) {
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
session_start();
.................

это начало моего кода. если ставлю мету это строка для сессии пустая и он начинает ругаться.
могу ли я поставить мету после сессии в самом php через echo?

типо того


<?php
error_reporting(E_ALL & ~E_NOTICE);
if ($_POST['rat']) {
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
session_start();
echo <META HTTP – EQUIV="Content – Type" content="text/html" charset="windows – 1251">

  Ответить  
 
 автор: cheops   (21.07.2011 в 16:33)   письмо автору
 
   для: Dazzl   (21.07.2011 в 15:51)
 

>могу ли я поставить мету после сессии в самом php через echo?
Да, конечно. META-тэг предназначен для браузеров и начнет свою работу только при попадании к клиенту, поэтому можете выводить его где угодно относительно PHP-кода (в HTML, конечно, его положение определено заголовком HTML-документа).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования