Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с кодировкой(((


Автор: Jozefina 23.4.2008, 18:30
Здравствуйте, уважаемые профи-программисты!!!! У меня есть небольшая проблемка...
Перенесли БД... charset = cp1251 
всё вроде бы должно корректно отображаться.....но не тут-то было : вместо руских слов отображаются 
Код
?????????

но самое интересное, что когда несколько раз нажимаешь F5(обновить страницу), то русский отображается корректно сразу везде....
Что это такое??? кто с таким сталкивался??? 
как можно решить такую проблему???
:nasty girl: 

Автор: smartov 23.4.2008, 18:57
Думаю дело не в базе. 
После загрузки страницы проверьте кодировку, которая выставилась в браузере - там Win 1251?

Автор: skyboy 23.4.2008, 23:56
полностью согласен со smartov.
БД - штука постоянная. если там какие-то данные "порушились", то никакие повторные запросы данных не восстановят утраченное.
по всей видимости, браузер, под которым тестируется, настроен на автоопределение кодировки, а в теле html-страницы кодировка явно не указывается(почему, спрашивается?). а браузер почему-то всякий раз определяет кодировку по-разному.

Автор: Jozefina 24.4.2008, 10:43
т.е. сразу после функции mysql_connect надо  добавить строку:
mysql_query('SET NAMES cp1251') or exit('SET NAMES Error');
правильно???

Автор: Feldmarschall 24.4.2008, 11:02
Цитата(skyboy @  23.4.2008,  23:56 Найти цитируемый пост)
в теле html-страницы 

в теле  html-страницы , а не в запросе к БД.
Хотя, скорее всего, такой запрос не помешает. если данные действительно в 1251, и база об этом тоже поставлена в известность

Автор: Jozefina 24.4.2008, 13:19
уважаемый Feldmarschall!!!
а можно чуть поподробнее...лучше в кодом прописать))
: crazy girl :

Автор: Feldmarschall 24.4.2008, 13:23
кодом чего именно? html-страницы?
открываем код этой html-страницы и смотрим, как указывется кодировка.

Автор: Fortop 24.4.2008, 13:57
Jozefina, 
любым удобным способом надо добавить в заголовок страницы следующее.

Код

<meta http-equiv="content-type" content="text/html; charset=windows-1251">


Из PHP лучше всего использовать http://ua.php.net/manual/ru/function.header.php там же есть и примеры установки charset

Автор: flashaa 24.4.2008, 14:03
Fortop, <meta ... charset забьет собой header, (по крайней мере посмотрел в ФФ при автоопределении кодировки забивает)
Код

<?php

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

?>
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Эти данные в UTF-8. Посмотрим, будут ли они читаемы
</html>

Поэтому лучше сначала разобраться с html meta charset, потом уже дальше лезть

Автор: Fortop 24.4.2008, 14:09
flashaa, попробуй такой вариант smile
Код

<?php
header('Content-type: text/html;charset = utf-8');
?>
<html>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
Эти данные в UTF-8. Посмотрим, будут ли они читаемы
</html>


Добавлено через 31 секунду
В IE

Автор: Feldmarschall 24.4.2008, 14:12
flashaa, к чему было это замечание? Ну забьёт и забьёт. Лишним не будет. 
Вот вы находите совсем пустые темы для споров.

Автор: Fortop 24.4.2008, 14:14
Feldmarschall, тсс, это он мне мстит за свою дотошную регулярку smile

На самом деле, IE и FF обрабатывают HEADER и META по-разному, я только сейчас обратил внимание smile

Автор: flashaa 24.4.2008, 14:19
Feldmarschall, замечание к тому что надо последовательно разобраться а не лепить костыли один для другого. Говорили про html meta, давайте добьем его а? А тут уже header суют. Они ж друг с другом не ладят, т.к. одно и тоже делают.
А спорят двое. Если нет противодействия, то нет и спора.
Fortop, хорошо, в ИЕ приоритет взял на header. A  ff нет - это оправдание лепить header и meta charset одновременно?

Автор: Jozefina 24.4.2008, 14:20
спасибо за отклик! за помощь!!
но сие изначально было прописано
Код

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Language" content="ru">
<link rel="stylesheet" type="text/css" href="style/front.css">

Автор: Feldmarschall 24.4.2008, 14:25
flashaa, 
Цитата(flashaa @  24.4.2008,  14:19 Найти цитируемый пост)
 Они ж друг с другом не ладят

А вот с этого места, пожалуйста, поподробнее.
В чем проявляется это "не ладят", если указывают одну и ту же кодировку?

Добавлено через 35 секунд
Jozefina, возможно, была опечатка

Автор: Fortop 24.4.2008, 14:33
flashaa, если они одинаковые, я предпочту лепить оба одновременно smile Что и делаю обычно.
А лепить meta & header - разные я бы не стал... ;)

Jozefina, учти вновь открывшиеся обстоятельства с разным поведением браузеров smile

добавь все таки еще и
Код

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

Автор: flashaa 24.4.2008, 14:45
Цитата(Feldmarschall @  24.4.2008,  14:25 Найти цитируемый пост)
А вот с этого места, пожалуйста, поподробнее.
В чем проявляется это "не ладят", если указывают одну и ту же кодировку?

Если указывают на одну  - все ок. Вопрос был в том что при неизвестном meta charset предлагают параллельное решение - header
Fortop, а я header'ом charset никогда не передавал. Было достаточно meta

Автор: Fortop 24.4.2008, 14:52
flashaa, честно, я уже не помню почему и где. Но помню, что были проблемы с автоопределением кодировки 
с установленным meta
и без header

С тех пор никаких проверок дополнительных не делал и ничего по этому поводу не читал smile но привычка осталась.

Автор: Jozefina 24.4.2008, 16:20
спасибо...разобралась..
проблема была в другом...
pear рулит!!! 
:nasty girl:

Автор: IZ@TOP 24.4.2008, 16:25
Цитата(Jozefina @  24.4.2008,  17:20 Найти цитируемый пост)
pear рулит!!! 

 smile 

Автор: Fortop 24.4.2008, 16:45
Jozefina, в чем была проблема мы так и не узнаем? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)