русский
Germany.ruForen → Архив Досок→ Webdesign und Hosting

Настроить кодировку

654  
eleron прохожий12.10.09 12:47
eleron
NEW 12.10.09 12:47 
Знатоки, подскажите плз, как проблемку beheben?
Дано:
- сайт сделан "вручную", на php, без движка, на русском языке.
- хостер немецкий, кодировка на сервере iso-8859-1, функция настройки add_default_charset не активна (закрыта хостером);
в кодировке юникод показывается в символах вместо букв, включение нужной кодировки в браузере дает положительный эффект (но не все ж посещающие станут искать переключатель, когда страница открывается криво).
после перевода страниц и БД в windows-1251, результат... приводит в бешенство.
понятно, что это - из-за кодировки сервера (iso-8859-1).
Вопрос:
Возможно ли договориться с хостером по поводу самостоятельного доступа к настройке кодировки?
Мож еще чё-нить посоветуете?
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#1 
GANDJUBAS Ганджубас12.10.09 14:49
GANDJUBAS
NEW 12.10.09 14:49 
in Antwort eleron 12.10.09 12:47
Если у тебя есть php, то совершенно пофигу, какая кодировка настроена на сервере... хоть китайский-дворовой...
Просто в php до первой "выдачи" данных прописываешь нужные тебе хидеры...
Если у тебя кодировка текста 1251, то
header ('Content-Type: text/html; charset=windows-1251');


если UTF-8, то

header ('Content-Type: text/html; charset=utf-8');


#2 
Валидол гость12.10.09 14:52
NEW 12.10.09 14:52 
in Antwort eleron 12.10.09 12:47
>>>- сайт сделан "вручную",
header('Content-Type: text/html; charset=utf-8');
пробовал?
#3 
Валидол гость12.10.09 14:53
NEW 12.10.09 14:53 
in Antwort GANDJUBAS 12.10.09 14:49
опередил
#4 
eleron прохожий13.10.09 09:04
eleron
NEW 13.10.09 09:04 
in Antwort GANDJUBAS 12.10.09 14:49
В ответ на:
header ('Content-Type: text/html; charset=windows-1251');
если UTF-8, то
header ('Content-Type: text/html; charset=utf-8');

Это - как "с добрым утром", обязательно есть, задано с самого начала. Ток не помогает.
В ответ на:
header('Content-Type: text/html; charset=utf-8');
пробовал?

Сайт был спланирован и сверстан в utf-8, с моего компа смотрелся нормально, "налюдатели" со стороны сообщали, что при первой загрузке рус шрифтов нет, надо кодировку браузера в ручную на юникод переключать, тада все ОК. И вот однажды... я решил перекрасить его в win-1251, вот тут-то всё и началось! Т.е. закончилось. Теперь и переключение браузёра не помогает.
Кто еще пользуется немецким хостингом для сайта на русском языке, подскажите как у Вас эта ... штука реализована.
Безвыходных ситуаций не бывает: даже если вас съели - у вас есть два выхода!
http://www.photoshop-library.com
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#5 
GANDJUBAS Ганджубас13.10.09 10:21
GANDJUBAS
NEW 13.10.09 10:21 
in Antwort eleron 13.10.09 09:04
Не должно такого быть... Где-то ошибка. Видимо идёт выдача содержания до прописывания хидеров.
Ты когда в UTF-8 верстал, сохранял файлы не с BOM случайно?
#6 
eleron прохожий13.10.09 11:25
eleron
NEW 13.10.09 11:25 
in Antwort GANDJUBAS 13.10.09 10:21
Хто такой ВОМ?
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#7 
Валидол гость13.10.09 11:35
NEW 13.10.09 11:35 
in Antwort eleron 13.10.09 09:04
К слову...возможно, что домашний сервер не показывает всех ПХП ошибок, и ты их не замечаешь..
php.ini
error_reporting = E_ALL & ~E_NOTICE ну или error_reporting = E_ALL
display_errors = On
#8 
GANDJUBAS Ганджубас13.10.09 11:39
GANDJUBAS
NEW 13.10.09 11:39 
in Antwort eleron 13.10.09 11:25, Zuletzt geändert 13.10.09 11:40 (GANDJUBAS)
http://de.wikipedia.org/wiki/Byte_Order_Mark
Обычно UTF-8-файлы начинаются с этого "символа", в итоге, если это php-скрипт, символ интерпретируется как текст и выдает до прописывания хидеров.
Но в нормальных текстовых редакторах можно сохранят utf-8 без bom.
#9 
eleron прохожий13.10.09 13:03
eleron
NEW 13.10.09 13:03 
in Antwort Валидол 13.10.09 11:35
В ответ на:
возможно, что домашний сервер не показывает всех ПХП ошибок

это да, локальный "работает лучше", чем в сети
Про ВОМ не знал ничего, поэтому сохранял стандартно, как это делается в Дриме: файл > сохранить как....
Вот, посмотрите начало страницы:
<?php
include ("blocks/bd.php");
$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);
if (!$result)
{
echo "<p>Неудачный запрос на вывод данных из базы. Свяжитесь с администратором
<strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array ($result);
}
else
{
echo "<p>Информация по запросу недоступна. В базе данных нет записей!</p>";
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow ['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow ['meta_k']; ?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
В юникоде, соответственно, было: charset=utf-8
Безвыходных ситуаций не бывает: даже если вас съели - у вас есть два выхода!
http://www.photoshop-library.com
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#10 
Валидол гость13.10.09 13:19
NEW 13.10.09 13:19 
in Antwort eleron 13.10.09 13:03, Zuletzt geändert 13.10.09 13:31 (Валидол)
Для уникода, поставь вверху..
header('Content-Type: text/html; charset=utf-8');
T.E верх твоего кода изменится на..
<?php
header('Content-Type: text/html; charset=utf-8');
include ("blocks/bd.php");

*******
IMHO: <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> не обязателен. И еще, домашний сервер должен показывать а не замалчивать их. т.е должен быть ХУЖЕ ;)

#11 
Murr коренной житель14.10.09 01:17
Murr
NEW 14.10.09 01:17 
in Antwort eleron 13.10.09 13:03
В ответ на:

<?php
include ("blocks/bd.php");
$result = mysql_query ("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'",$db);
if (!$result)
{
echo "<p>Неудачный запрос на вывод данных из базы. Свяжитесь с администратором
<strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array ($result);
}
else
{
echo "<p>Информация по запросу недоступна. В базе данных нет записей!</p>";
exit();
}
?>

Где-то здесь у тебя что-то сбрасывается на выход. Как только что-то туда отправляется - отсутствующие заголовки прописываются как заданы на сервере и они не переопределяются. Просто пиши так, чтобы все генерилось корректно.
#12 
eleron прохожий19.10.09 14:42
eleron
19.10.09 14:42 
in Antwort Валидол 13.10.09 13:19, Zuletzt geändert 19.10.09 14:45 (eleron)
В ответ на:
Где-то здесь у тебя что-то сбрасывается на выход.

Это - проверка переменных, если хоть одна переменная пуста, выдается сообщение об ошибке или о том, что в базе по этой ссылке пусто.
В ответ на:
Для уникода, поставь вверху..
header('Content-Type: text/html; charset=utf-8');

К сожалению, не помогло.
Думаю, дело всетаки в кодировке, установленной на сервере по умолчанию.
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#13 
Валидол посетитель19.10.09 14:47
NEW 19.10.09 14:47 
in Antwort eleron 19.10.09 14:42
дело в том, что таким способом меняется умолчательная кодировка.
чет не то.. что за сервер?
#14 
eleron прохожий19.10.09 16:40
eleron
NEW 19.10.09 16:40 
in Antwort Валидол 19.10.09 14:47
В ответ на:
Для уникода, поставь вверху..
header('Content-Type: text/html; charset=utf-8');

C юникодом-то проблем не было , проблемы начались когда я захотел в win-1251 перевести.
В ответ на:
что за сервер?

В смысле? Провайдер alfahosting.
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#15 
Murr коренной житель19.10.09 20:37
Murr
NEW 19.10.09 20:37 
in Antwort eleron 19.10.09 14:42
Это...
-----
ну, еще раз - сброс чего-либо, вообще хоть чего-то - например, одного пробела или
перевода строки, - на выход вызывает автоматическое прописывание заголовков.
Тех заголовков, которые заданы по умолчанию и которые переписать уже невозможно.
Ферштайн?
#16 
Валидол посетитель19.10.09 21:43
NEW 19.10.09 21:43 
in Antwort eleron 19.10.09 16:40
про прова я спросил подумав о бесолатном хостинге там, чтобы проверить твои слова о том что Header() не аботает. Бесплатного я не увидел. Ну да ладно.
..
Как я говорил выше настрой свой домашний сервер на выдачу всех ошибок и предупреждений. Легче будет отловить ошибку.
#17 
Sergo2008 знакомое лицо20.10.09 10:00
Sergo2008
NEW 20.10.09 10:00 
in Antwort eleron 19.10.09 16:40
В ответ на:
C юникодом-то проблем не было , проблемы начались когда я захотел в win-1251 перевести.

А в чем кстати проблема, ну и оставил бы сайт на утф8.
А вообще, старый хостер, у которого стоял мой уже закрывшийся первый сайт, тоже была кодировка по умолчанию в iso-8859-1, но при этом проблем с windows-1251 не наблюдал.
В ответ на:
Сайт был спланирован и сверстан в utf-8,

Может ты просто переведя сайт на windows-1251 забыл сам файл переконвертировать из UTF в ANSI?
Моё личное мнение, нужно забывать про старые кодировки, и работать с универсальной UTF кодировкой, тогда и проблем с отображением не будет. А хостеры по умолчанию все поддерживают UTF кодировку, и большинство других, а если нет, то это левый хостер.
#18 
eleron прохожий22.10.09 22:18
eleron
NEW 22.10.09 22:18 
in Antwort Sergo2008 20.10.09 10:00, Zuletzt geändert 22.10.09 22:30 (eleron)
В ответ на:
Бесплатного я не увидел.

есть 7 дней бесплатного теста, вот сцылка: http://alfahosting.de/webhosting_kostenlos_testen/webspace_gratis.html
В ответ на:
настрой свой домашний сервер на выдачу всех ошибок

В ответ на:
забыл сам файл переконвертировать из UTF в ANSI?

да, надо будет поковырять
В ответ на:
нужно забывать про старые кодировки, и работать с универсальной UTF кодировкой

дело в том, что у мя лично проблем с отображением сайта в юникоде не было.
када я сайт опубликовал, как водица, похвастался друзьям и т.п., они сообщили, что при первом посещении вместо букав - символы, вот и заморочился я перевести в русскую кодировку, а на серваке по умолчанию стоит западно-европейская, с моей русской приходилось при каждом переходе на каждую страницу вкл. рус. кодировку.
решения я пока не нашел, на вопрос - забил, снова вернул фсё в юникод.
Всеже, всем спасибо за отклики и желание помочь!!!
Никогда не мотай на ус то, что тебе вешают на уши... Те, кто говорит, что так не бывает, пусть не мешают тем, кто так делает.
#19 
  anatoli888 старожил03.11.09 02:01
NEW 03.11.09 02:01 
in Antwort eleron 22.10.09 22:18
кодировку указать в заголовке не достаточно. сам код должен быть сохранен в той же кодировке которая указана в заголовке.
#20