За последние 24 часа нас посетили 20049 программистов и 1571 робот. Сейчас ищут 1983 программиста ...

Создаю страницу в UTF-8, вместо букв кракозябры

Тема в разделе "PHP и базы данных", создана пользователем Guest2011, 21 авг 2010.

  1. Guest2011

    Guest2011 Активный пользователь

    С нами с:
    21 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    Использую денвер3. Написал простейшую веб-страницу в notepad++, сохранил в UTF-8 (без Вом)
    при открытии отображаются вместо символов кракозябры
    Пошел в Вид>Кодировка там стоит Кирилица(Windows)
    в базе данных mysql выставил utf-8(если быть точным, то Сопоставление соединения с MySQL=utf8_general_ci)

    гуглил и читал на этом форуме похожие темы по поводу кодировки utf-8
    добавил в файл .htaccess строку AddDefaultCharset UTF-8, но всё безрезультатно
    .htaccess у меня в папке C:\WebServers\home\custom
    его местоположение не менял

    ниже код моей страницы

    Код (Text):
    1. <html>
    2. <head>
    3. <title>Главная</title>
    4. <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    5.  
    6.  </head>
    7.  
    8.  
    9. <body>
    10. <p>Проверка домена</p><br>
    11.  
    12. <?
    13. $db = mysql_connect ("localhost","people","pass");
    14. mysql_select_db ("mybase",$db);
    15. $result=mysql_query("SELECT * FROM lessons2",$db);
    16. #$num=mysql_num_rows($result);
    17. #echo "Уроков в базе - $num;"
    18.  ?>
    19.  
    20. </body>
    21. </html>
    и почему-то тут стоит кодировка сp1251
    http://img-fotki.yandex.ru/get/4505/myg ... f90_XL.jpg


    это не помагает:
    Код (Text):
    1. mysql_query('SET NAMES utf8');
    2. mysql_query('SET CHARACTER SET utf8');mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"');
    пытался так, тоже:
    Код (Text):
    1. mysql_set_charset("utf8");
     
  2. Guest2011

    Guest2011 Активный пользователь

    С нами с:
    21 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    решил проблему так:

    в httpd.conf заменил AddDefaultCharset windows-1251
    на AddDefaultCharset utf-8



    но столкнулся со следующей проблемой:
    теперь у меня глобальная кодировка стоит utf-8.
    и если я захочу сделать паралельно с этим сайт в другой кодировке, то ...
    вот, что получается:

    для эксперимента я создал новую страницу в win-1251. и попробовал загрузить её. Но уже в ней вместо букв появились квадратики, - страница загрузилась в уникоде. Попробовал создать в корневой директории файл
    .htaccess и прописал в него AddDefaultCharset WINDOWS-1251

    В первый раз на удивление всё загрузилась (и я обрадовался, что денвер работает в двух кодировках).

    Но я перегрузил сервер и запустил страницу, которая в кодировке WIN-1251 снова.
    и тут ничего не загрузилось а написало "невозможно отобр.стр."
    я заглянул в C:\WINDOWS\system32\drivers\etc в файл hosts и заметил, что напротив всех хостов установлено 127.0.0.1 а у этого где страница в кирилице 127.0.0.2.
    Я поменял 127.0.0.2. на 127.0.0.1 и перегрузил страницу. Загрузилась, но не моя , а страница "Ура зара...о", но в кодировке utf и поэтому в квадратиках вместо букв.


    т.е. со страницей в уникоде проблем нет. теперь проблема стала наоборот
     
  3. Guest2011

    Guest2011 Активный пользователь

    С нами с:
    21 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    До сих пор проблема не решилась :)
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    выдавай header() соответствующий и все
     
  5. Guest2011

    Guest2011 Активный пользователь

    С нами с:
    21 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    Этот вариант не подойдет, т.к. по этому поводу мне на одном из форумов ответили:
    "Для конкретного случая с PHP-скриптом предоставленным автором темы действительно достаточно добавить функцию Header в нужной части исходного кода - однако для общей правильной работы сайта желательно указать параметры кодовой таблицы по умолчанию для директории в htaccess или всего виртуального хоста - дело в том что если этого не сделать то статические HTML-файлы и вложенные JS-скрипты будут иметь несовместимую кодировку - что приведет к возможным ошибка при их вложенном подключении или передачи информации".


    Поэтому я попытался сделать как и говорилось, Создал в рабочей директории копию файла .htaccess. (В нем проверил, написана только одна строка AddDefaultCharset UTF-8)
    Обновил - страница загрузилась без кракозябров.

    Но, сделав рестарт сервера, обновил страницу и увидел вместо своей страницы страницу "Ура заработало"



    Подскажите, пожалуйста, как сделать чтобы загружалась моя страница без кракозябров, а не Ура заработало