|
|
|
| Я начинающий программист. При отображении текста мне нужно использовать несколько языков.
Поэтому искодный индекс-файл я записал в формате UTF-8.
Понятно, что Браузер клиента не всегда настроен под мой сайт. И в этом случае текст становится нечитабельным.
Вопрос: Как программным путем обеспечить корректное отображение текста вне зависимости от настроек браузера?
Спасибо | |
|
|
|
|
|
|
|
для: Yefim
(18.01.2011 в 12:13)
| | Вы указываете кодировку в META-заголовке Content-Type (в HTML-коде)? | |
|
|
|
|
|
|
|
для: cheops
(18.01.2011 в 12:26)
| | Спасибо. Указываю. Но это не помогает Где об этом можно почитать подробнее? | |
|
|
|
|
|
|
|
для: Yefim
(19.01.2011 в 10:10)
| | Это (кодировка в META) не имеет смысла делать вообще.
Умалчиваемая кодировка сайта указывается директивой http-сервера apache addDefaultCharset "Кодировка" (или аналогичными инструментами для других серверов).
Прочесть об этом можно в инете, использовав название директивы в качестве поискового ключа
Кодировка конкретного документа (если она отличается от умалчиваемой, что само по себе не приветствуется, так как приводит к путанице) может быть задана полем заголовка отклика
Content-Type: text/html; charset="Кодировка" - в php это делается с помощью функции header() | |
|
|
|
|
|
|
|
для: Yefim
(18.01.2011 в 12:13)
| | meta не имеете никакого эффекта, если вы пишите на РНР, отправьте заголовок до вывода любого контента
<?php
header('Content-type: text/html; charset="windows-1251"');
?>
|
| |
|
|
|
|
|
|
|
для: 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) текст отображается корректно. | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 09:47)
| | Заоголовки типа
<?php
header('Content-type: text/html; charset="windows-1251"');
?>
|
должны высылаться раньше чем произойдет какой либо вывод информации(print, echo) в браузер, поставьте его в самом верху файла | |
|
|
|
|
|
|
|
для: ONYX
(20.01.2011 в 10:03)
| | Перевел строку в начало файла. Сообщения об ошибке нет. Но проблема осталась. | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 10:38)
| | а вы можете свой index файл выложить? | |
|
|
|
|
|
|
|
для: lightning.say
(20.01.2011 в 11:15)
| | >>header('Content-type: text/html; charset="windows-1251"');
>>Только после того как я устанавливаю вручную кодировку (Unicode (UTF-8) текст отображается корректно.
Ничего не замечаете? | |
|
|
|
|
|
|
|
для: Гость
(20.01.2011 в 11:25)
| | . | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 10:38)
| | Чтож вы занимаетесь тупо копи-пастом. Поправьте на вашу кодирвку:
<?php
header('Content-type: text/html; charset="UTF-8"');
?>
|
| |
|
|
|
|
|
|
|
для: 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 == 1 || $hour == 21) { $Hs='час';
}
else if ($hour <=4 || $hour >= 22) {
$Hs='часa';
}
else {
$Hs='часов';
}{
}
////////////////////////////////
///minutes
if ($minutes <10){
$i0=$minutes ;
}else{
$i0=$minutes - 10* floor( $minutes % 10);
}
if ($minutes>=10 && $minutes<=20) {
$is='минут';
}
else {
if ($i0 ==1){
$is='минута';
}else{
if ($i0 >=2 && $i0<=4){
$is='минуты';
}
else{
$is='минут';
}
}
}
?>
<html>
<head>
<title>Time</title>
</head>
<body>
<?php
echo "Hello Time World";
echo "<br>";
echo "Это учебный сайт.";
echo "<br>";
echo "שלום חברים!";
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>
|
| |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 13:08)
| | Ну и ? Работает? | |
|
|
|
|
|
|
|
для: mihdan
(20.01.2011 в 13:21)
| | Проблема остается | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 13:30)
| | Кстати текст моего файла на форуме в одном месте отображается не так как B Notepad | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 13:34)
| | >Кстати текст моего файла на форуме в одном месте отображается не так как B Notepad
Штатный Notepad не обязан отображать файлы в корректном виде.
Во всяком случае его воззрения на то, какая кодировка в файле, и воззрения на это же обстоятельство http-сервера (которые тот потом браузеру сообщает) обычно отличаются.
Почему Notepad'ом для работы с html- и php-файлами пользоваться настоятельно не рекомендуют.
Сказанное однозначно справедливо для кодировки utf8 | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 13:08)
| | попробуй в <head> перед <title> указать
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | |
|
|
|
|
|
|
|
для: lightning.say
(20.01.2011 в 13:28)
| | Вставил.
Убрал в начале файла:
<?php
header('Content-type: text/html; charset="UTF-8"');
?>
==============
Не помогает... | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 14:02)
| | в файле httpd.conf
AddDefaultCharset UTF-8 установлена? точно? | |
|
|
|
|
|
|
|
для: lightning.say
(20.01.2011 в 14:08)
| | В файле httpd.conf на моем компе установлено AddDefaultCharset UTF-8 и все работает нормально.
А на удаленном сервере этот файл мне недоступен.
Могу ли я скопировать его с дом. компа на удаленный сервер?
Если да, то в какую папку? | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 14:47)
| | > Могу ли я скопировать его с дом. компа на удаленный сервер?
Нет, так как
> на удаленном сервере этот файл мне недоступен.
У вас firebug или что-нибудь подобное есть? Посмотрите, какую кодировку определяет браузер.
Приведенная выше строка
header("Content-Type: text/html; charset=utf-8");
|
должна работать.
И еще - в корне .htaccess не лежит? Если лежит - что в нем? Там тоже можно кодировку указывать.. | |
|
|
|
|
 9 Кб |
|
|
для: neadekvat
(20.01.2011 в 15:02)
| | Посылаю список файлов, что лежат в корне | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 15:37)
| | Что в папке www? | |
|
|
|
|
|
|
|
для: neadekvat
(20.01.2011 в 15:38)
| | Нет. Это в Главная папка моего сайта
В папке WWW находится index.php | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 16:08)
| | В www только index.php?
Значит, вы неправильно отправляете кодировку, или в браузере насильно что-то выставили - он и запомнил. | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 15:37)
| | То, что Вы показали на картинке, корнем не является ни с какого боку.
Или скажем так, максимум это может быть названо корнем FTP-эккаунта, который не имеет никакого отношения к ни к php-коду, ни к http-обмену. | |
|
|
|
|
|
|
|
для: Trianon
(20.01.2011 в 16:21)
| | В любом случае спасибо, что столько времени терпите меня!!! | |
|
|
|
|
|
|
|
для: Yefim
(20.01.2011 в 17:12)
| | Вопрос еще актуален?
Позвольте помочь: откройте скрипт в notepad++ и выберите меню "Кодировки", затем нажмите "преобразовать в UTF-8 без BOM"
Должно помочь. | |
|
|
|
|
|
|
|
для: hxt
(20.01.2011 в 17:38)
| | Спасибо. Обязательно попробую. На сегодня отбой. Есть неоложные дела. Извините. | |
|
|
|
|
|
|
|
для: hxt
(20.01.2011 в 17:38)
| | А причем здесь это? оО
Это решение проблемы "headers already sent...", хотя они ни разу не сент. | |
|
|
|
|
|
|
|
для: neadekvat
(20.01.2011 в 19:39)
| | Ну мало ли, вдруг человек забыл сохранить скрипт в utf-8. Я сам так пару раз ошибался. | |
|
|
|
|
|
|
|
для: hxt
(20.01.2011 в 20:02)
| | > Поэтому искодный индекс-файл я записал в формате UTF-8.
Ну если после этих слов автор на самом деле не сохранил файл в utf-8.. | |
|
|
|