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

Форум PHP

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

 

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

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

тема: Проблема с кодировкой
 
 автор: Yefim   (18.01.2011 в 12:13)   письмо автору
 
 

Я начинающий программист. При отображении текста мне нужно использовать несколько языков.
Поэтому искодный индекс-файл я записал в формате UTF-8.
Понятно, что Браузер клиента не всегда настроен под мой сайт. И в этом случае текст становится нечитабельным.
Вопрос: Как программным путем обеспечить корректное отображение текста вне зависимости от настроек браузера?
Спасибо

  Ответить  
 
 автор: cheops   (18.01.2011 в 12:26)   письмо автору
 
   для: Yefim   (18.01.2011 в 12:13)
 

Вы указываете кодировку в META-заголовке Content-Type (в HTML-коде)?

  Ответить  
 
 автор: Yefim   (19.01.2011 в 10:10)   письмо автору
 
   для: cheops   (18.01.2011 в 12:26)
 

Спасибо. Указываю. Но это не помогает Где об этом можно почитать подробнее?

  Ответить  
 
 автор: Trianon   (19.01.2011 в 11:07)   письмо автору
 
   для: Yefim   (19.01.2011 в 10:10)
 

Это (кодировка в META) не имеет смысла делать вообще.
Умалчиваемая кодировка сайта указывается директивой http-сервера apache addDefaultCharset "Кодировка" (или аналогичными инструментами для других серверов).
Прочесть об этом можно в инете, использовав название директивы в качестве поискового ключа
Кодировка конкретного документа (если она отличается от умалчиваемой, что само по себе не приветствуется, так как приводит к путанице) может быть задана полем заголовка отклика
Content-Type: text/html; charset="Кодировка" - в php это делается с помощью функции header()

  Ответить  
 
 автор: mihdan   (19.01.2011 в 22:01)   письмо автору
 
   для: Yefim   (18.01.2011 в 12:13)
 

meta не имеете никакого эффекта, если вы пишите на РНР, отправьте заголовок до вывода любого контента


<?php
header
('Content-type: text/html; charset="windows-1251"');
?>

  Ответить  
 
 автор: Yefim   (20.01.2011 в 09:47)   письмо автору
 
   для: mihdan   (19.01.2011 в 22:01)
 

Спасибо! Воспользовался вашим предложением. Не помогло. Теперь Сервер посылает первой строкой сообщение:
Warning: Cannot modify header information - headers already sent by ...... /WWW/index.php on line 55

В строке 55 как раз и находится эта строка
header('Content-type: text/html; charset="windows-1251"');

Только после того как я устанавливаю вручную кодировку (Unicode (UTF-8) текст отображается корректно.

  Ответить  
 
 автор: ONYX   (20.01.2011 в 10:03)   письмо автору
 
   для: Yefim   (20.01.2011 в 09:47)
 

Заоголовки типа
<?php 
header
('Content-type: text/html; charset="windows-1251"'); 
?>

должны высылаться раньше чем произойдет какой либо вывод информации(print, echo) в браузер, поставьте его в самом верху файла

  Ответить  
 
 автор: Yefim   (20.01.2011 в 10:38)   письмо автору
 
   для: ONYX   (20.01.2011 в 10:03)
 

Перевел строку в начало файла. Сообщения об ошибке нет. Но проблема осталась.

  Ответить  
 
 автор: lightning.say   (20.01.2011 в 11:15)   письмо автору
 
   для: Yefim   (20.01.2011 в 10:38)
 

а вы можете свой index файл выложить?

  Ответить  
 
 автор: Гость   (20.01.2011 в 11:25)   письмо автору
 
   для: lightning.say   (20.01.2011 в 11:15)
 

>>header('Content-type: text/html; charset="windows-1251"');

>>Только после того как я устанавливаю вручную кодировку (Unicode (UTF-8) текст отображается корректно.

Ничего не замечаете?

  Ответить  
 
 автор: lightning.say   (20.01.2011 в 12:11)   письмо автору
 
   для: Гость   (20.01.2011 в 11:25)
 

.

  Ответить  
 
 автор: mihdan   (20.01.2011 в 12:14)   письмо автору
 
   для: Yefim   (20.01.2011 в 10:38)
 

Чтож вы занимаетесь тупо копи-пастом. Поправьте на вашу кодирвку:


<?php  
header
('Content-type: text/html; charset="UTF-8"');  
?>

  Ответить  
 
 автор: Yefim   (20.01.2011 в 13:08)   письмо автору
 
   для: mihdan   (20.01.2011 в 12:14)
 

Вот файл, записанный в формате UTF-8



<?php
header
('Content-type: text/html; charset="UTF-8"');
?>

<?php
   $now 
time( );
   
$hour Date'H'$now );
   
$minutes Date'i'$now );

           if(
$hour == || $hour == 21) {            $Hs='час';
           }
           else if (
$hour <=|| $hour >= 22) {
                 
$Hs='часa';
                }
                else {
                    
$Hs='часов';
                }{

           }
           
////////////////////////////////
           ///minutes
           
if ($minutes <10){
              
$i0=$minutes ;
           }else{
              
$i0=$minutes 10floor$minutes 10);
           }
                 if (
$minutes>=10 && $minutes<=20) {
                           
$is='минут';
                 }
                 else     {
                   if (
$i0 ==1){
                           
$is='минута';
                   }else{
                      if (
$i0 >=&& $i0<=4){
                           
$is='минуты';
                           }
                          else{
                           
$is='минут';
                          }


                      }

                 }

?>


<html>
<head>
<title>Time</title>

</head>
<body>

<?php

echo "Hello Time World";
echo 
"<br>";
echo 
"Это учебный сайт.";
echo 
"<br>";
echo 
"&#1513;&#1500;&#1493;&#1501; &#1495;&#1489;&#1512;&#1497;&#1501;!";
echo 
"<br>";

echo 
"Current time on server"date("H:i:s");
echo 
"<br>";
echo 
"Текущее Время: ""$hour : $Hs $minutes $is";

echo 
"<br>";
echo 
"IP address of Cient: "$_SERVER['REMOTE_ADDR'];
echo 
"<br>";
echo 
"<br>";
echo 
"<br>";
echo 
"<br>";
?>



</body>
</html>

  Ответить  
 
 автор: mihdan   (20.01.2011 в 13:21)   письмо автору
 
   для: Yefim   (20.01.2011 в 13:08)
 

Ну и ? Работает?

  Ответить  
 
 автор: Yefim   (20.01.2011 в 13:30)   письмо автору
 
   для: mihdan   (20.01.2011 в 13:21)
 

Проблема остается

  Ответить  
 
 автор: Yefim   (20.01.2011 в 13:34)   письмо автору
 
   для: Yefim   (20.01.2011 в 13:30)
 

Кстати текст моего файла на форуме в одном месте отображается не так как B Notepad

  Ответить  
 
 автор: Trianon   (20.01.2011 в 17:29)   письмо автору
 
   для: Yefim   (20.01.2011 в 13:34)
 

>Кстати текст моего файла на форуме в одном месте отображается не так как B Notepad

Штатный Notepad не обязан отображать файлы в корректном виде.
Во всяком случае его воззрения на то, какая кодировка в файле, и воззрения на это же обстоятельство http-сервера (которые тот потом браузеру сообщает) обычно отличаются.
Почему Notepad'ом для работы с html- и php-файлами пользоваться настоятельно не рекомендуют.
Сказанное однозначно справедливо для кодировки utf8

  Ответить  
 
 автор: lightning.say   (20.01.2011 в 13:28)   письмо автору
 
   для: Yefim   (20.01.2011 в 13:08)
 

попробуй в <head> перед <title> указать

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

  Ответить  
 
 автор: Yefim   (20.01.2011 в 14:02)   письмо автору
 
   для: lightning.say   (20.01.2011 в 13:28)
 

Вставил.
Убрал в начале файла:
<?php
header('Content-type: text/html; charset="UTF-8"');
?>
==============
Не помогает...

  Ответить  
 
 автор: lightning.say   (20.01.2011 в 14:08)   письмо автору
 
   для: Yefim   (20.01.2011 в 14:02)
 

в файле httpd.conf

AddDefaultCharset UTF-8 установлена? точно?

  Ответить  
 
 автор: Yefim   (20.01.2011 в 14:47)   письмо автору
 
   для: lightning.say   (20.01.2011 в 14:08)
 

В файле httpd.conf на моем компе установлено AddDefaultCharset UTF-8 и все работает нормально.
А на удаленном сервере этот файл мне недоступен.
Могу ли я скопировать его с дом. компа на удаленный сервер?
Если да, то в какую папку?

  Ответить  
 
 автор: neadekvat   (20.01.2011 в 15:02)   письмо автору
 
   для: Yefim   (20.01.2011 в 14:47)
 

> Могу ли я скопировать его с дом. компа на удаленный сервер?
Нет, так как
> на удаленном сервере этот файл мне недоступен.

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

должна работать.

И еще - в корне .htaccess не лежит? Если лежит - что в нем? Там тоже можно кодировку указывать..

  Ответить  
 
 автор: Yefim   (20.01.2011 в 15:37)   письмо автору
9 Кб
 
   для: neadekvat   (20.01.2011 в 15:02)
 

Посылаю список файлов, что лежат в корне

  Ответить  
 
 автор: neadekvat   (20.01.2011 в 15:38)   письмо автору
 
   для: Yefim   (20.01.2011 в 15:37)
 

Что в папке www?

  Ответить  
 
 автор: Yefim   (20.01.2011 в 16:08)   письмо автору
 
   для: neadekvat   (20.01.2011 в 15:38)
 

Нет. Это в Главная папка моего сайта
В папке WWW находится index.php

  Ответить  
 
 автор: neadekvat   (20.01.2011 в 16:36)   письмо автору
 
   для: Yefim   (20.01.2011 в 16:08)
 

В www только index.php?
Значит, вы неправильно отправляете кодировку, или в браузере насильно что-то выставили - он и запомнил.

  Ответить  
 
 автор: Trianon   (20.01.2011 в 16:21)   письмо автору
 
   для: Yefim   (20.01.2011 в 15:37)
 

То, что Вы показали на картинке, корнем не является ни с какого боку.
Или скажем так, максимум это может быть названо корнем FTP-эккаунта, который не имеет никакого отношения к ни к php-коду, ни к http-обмену.

  Ответить  
 
 автор: Yefim   (20.01.2011 в 17:12)   письмо автору
 
   для: Trianon   (20.01.2011 в 16:21)
 

В любом случае спасибо, что столько времени терпите меня!!!

  Ответить  
 
 автор: hxt   (20.01.2011 в 17:38)   письмо автору
 
   для: Yefim   (20.01.2011 в 17:12)
 

Вопрос еще актуален?
Позвольте помочь: откройте скрипт в notepad++ и выберите меню "Кодировки", затем нажмите "преобразовать в UTF-8 без BOM"
Должно помочь.

  Ответить  
 
 автор: Yefim   (20.01.2011 в 17:46)   письмо автору
 
   для: hxt   (20.01.2011 в 17:38)
 

Спасибо. Обязательно попробую. На сегодня отбой. Есть неоложные дела. Извините.

  Ответить  
 
 автор: neadekvat   (20.01.2011 в 19:39)   письмо автору
 
   для: hxt   (20.01.2011 в 17:38)
 

А причем здесь это? оО
Это решение проблемы "headers already sent...", хотя они ни разу не сент.

  Ответить  
 
 автор: hxt   (20.01.2011 в 20:02)   письмо автору
 
   для: neadekvat   (20.01.2011 в 19:39)
 

Ну мало ли, вдруг человек забыл сохранить скрипт в utf-8. Я сам так пару раз ошибался.

  Ответить  
 
 автор: neadekvat   (20.01.2011 в 20:18)   письмо автору
 
   для: hxt   (20.01.2011 в 20:02)
 

> Поэтому искодный индекс-файл я записал в формате UTF-8.
Ну если после этих слов автор на самом деле не сохранил файл в utf-8..

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

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