За последние 24 часа нас посетили 18593 программиста и 1621 робот. Сейчас ищут 1260 программистов ...

Проблемы с кодировками PHP MySQL

Тема в разделе "Установка PHP", создана пользователем Nafanya, 1 дек 2009.

  1. Nafanya

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

    С нами с:
    1 дек 2009
    Сообщения:
    2
    Симпатии:
    0
    В общем писал сайтик на денвере, написал все замечательно, решил его перекочевать на Apach+PHP+MySQL (советовали денвер в инет не сувать), поставил по инструкции (шас ссылку не вспомню, но вижу в нэте их полно.) после того как все настроил, подключил проблема в следуюшем: в phpmyadmin инфу сайта нормально вижу, кирилица все в порядке. а на сайте выкидывает знаки вопроса. подозреваю на php.ini т.к. phpinfo() выдает стандартную кодировку utf8, utf16 а в БД и таблицах мускула cp1251. где надо поменять что б (или апач или пхп - затрудняюсь сказать) показывал мне кодировку cp1251?. Заранее спасибо, ломаю голову 2е сутки. :( :( :(
     
  2. SDR

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

    С нами с:
    22 сен 2009
    Сообщения:
    244
    Симпатии:
    0
    гуглим что-то типа: mysql set names
     
  3. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Вот непонимаю я таких ответов.
    Неужели кто-то думает что если человек установил у себя на компе связку APM то он бы сам недогадался зайти со своим вопросом в гугл?
    А может сразу с главной страницы этого форума сделать редирект на Гугл? А то пишут тут, понимаеш, вопросы всякие и немогут догадатса в гугле спросить, бестолочь ,понимаеш, всякая!

    Извините за сарказм, ув. форумчане, но когда вижу подобные ответы меня это выводит из себя.

    Если лень ответить самому то просто неотвечайте! Вас никто за это неосудит! На этом форуме есть полно опытных специалистов по этой теме, которые смогут дать вразумительный , исчерпывающий ответ. Это же не сайт "контакты".

    По теме:
    Я тоже столкнулся с этой проблемой. через гугл нашел затычку для нее. Помогает если в базе текст выводитса нормально , а уже после того как оттуда вытащить его то он превращаетса в знаки вопросов.

    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");

    вот это прописать после соединения с базой.
    Но это только затычка.

    Хотелось бы получить вразумительный ответ как исправить кодировку по умолчанию в самих настройках пхп.
    Вроде везде прописал 1251 но сайт на ПХП всеравно из русских букв в тексте показывет каракули.
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Я так понимаю, предлюдия была для задания тона и настроения отвечающему? Ну что же... Вы справились.

    Извините за сарказм, ув. форумчане, но когда вижу дураков не способных прочитать мануал меня это выводит из себя.

    Если лень прочитать мануал самому, то просто неспрашивайте! Вас никто за это не осудит! На этом форуме есть полно неопытных неспециалистов по этой теме, которые смогут задать невразумительный, неисчерпывающий вопрос. Это же не сайт "контакты".

    По теме:

    Тут описано, как изменить настройки PHP по-умолчанию
    Тут описано, как изменить настройки Apache по-умолчанию
    Тут описано, как изменить настройки MySQL по-умолчанию
     
  5. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Ну хоть бы сам посмотрел что за ссылки дал то:lol:
    Ты б еще на японском выдал чтото. А может не все изучали английский в школе?
    Об этом думал перед тем как начинать хамить?

    Думаю модератору пора удалять уже посты а то начнетса банальное поливалово друг-друга.
    Мысль я свою донес до человека и думаю со временем она всетаки дойдет до адресата :D
     
  6. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ты сюда не ходи, ты туда ходи. А то снег башка попадет - совсем мертвый будешь (С) к/ф самизнаетекакой

    Тогда что вы делаете в программировании?

    Это тебе не мелочь по карманам тырить (С) оттудаже

    Я думаю, что тот человек Вас не читал и не скоро прочтет :) А Вы... или учитесь вразумительно и без синтаксических ошибок(запятые и прочие знаки препинания) писать вопросы и пользуйтесь поиском по форуму. Или изучайте вместе с PHP еще и английский.

    P.S. И, да, если Вы сами ноль, то меньше претензий к окружающему миру.
    Говорят, помогает.
     
  7. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Sinsir
    Вы таки не поверите, но
    http://dev.mysql.com/doc/refman/5.0/en/ ... ction.html

    О да, оно на английском. Однако, я согласен с Simpliest. Английский нужно знать.
    А программировать на русском - это вам в 1с)))
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Английский нужно знать на данном этапе развития программирования.
    Не потому что язык придуман и поддерживается англоговорящими людьми. Не потому что английский это "международный" язык.
    А потому что на русском нету/мало/сложно найти то что нужно в хорошем качестве. И потому что ключевые слова и многие функции собственно являются английскими словами.
    (Давно хотел высказать мысль. =)))

    Кстати, admyx, Java вполне себе поддерживает национальные наименования (методы, переменные, классы).
     
  9. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Volt(220)
    Так и на php можно написать

    PHP:
    1. <?php
    2. class СвистелкиИПерделки
    3. {
    4.      function Пощелкать()
    5.      {
    6.           echo 'clicked';
    7.      }
    8. }
    9.  
    10. $мойКласс = new СвистелкиИПерделки();
    11. $мойКласс->Пощелкать();
    Вот только зачем?
    Мне как-то довелось править код, написанный на словенском. Это капец, товарищи. Врагу не пожелаешь. Хотя нет, врагу как раз и пожелаешь.
    Знаешь, есть такое выражение -
     
  10. Nafanya

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

    С нами с:
    1 дек 2009
    Сообщения:
    2
    Симпатии:
    0
    я так вижу много я тут пропустил.... Во-первых почему, ув. Sinsir решил что ответ
    мне не помог? Еси я вообще дуб-дубом пока, и мне хотя бы в каком направлении гуглить надо. или Вы считаете что ему надо переписывать все, что должно с этим связано?

    2е: всё эти мануали, хорошо, но и у них грабли бывают.... или вы считаете что у всех одни и тоже сборка винды? у всех в настройках винды одна и такая же кодировка установлена, и выставлена по умолчанию? а русификаторы, а региональные настройки?!?!? это тоже влияет, ИМХО.

    В итоге я поменял разные кодировки в настройках подключение, не помню, нашел какой то забугорный мануал, там вроде бы и прозрачно написано, и разные ситуовины расписаны. в общем шас уже грабли с виртуальными машинами на апаче).

    А по поводу английского, свои "5 копеек": ЕГО ЗНАТЬ НАДО!!! можно не уметь говорить, это сделают за вас менеджер, но читать ОБЯЗАТЕЛЬНО!!!! тем более технический. И канеш извиняюсь за оффтоп: но помню как мне надо было исправлять баги корейской винды (из посольства ко мне в сервис привезли). ДЕ ДАЖЕ АНГ И УПОМИНАНИЯ НЕТ. а все тупо иероглифами... так что английский, это сила.

    ЗЫ: я чето не догоняю.
    это к чему пост, и че за тема пошла? :(
     
  11. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    На работу с базой это не влияет никак.

    При работе с кодировками необходимо обратить внимание на 3 вещи.

    1. В какой кодировке работаешь с БД (то самое пресловутое set names)
    2. Содержимое твоих скриптов (в какой кодировке они сохранены)
    3. Header который отдает сервер вместе с страницей (можно изменить как на сервере, так и с помощью php).

    Этого вполне достаточно чтобы получить от пользователя слово "Вася".
    Найти всех "Вась" в базе.
    И вывести их список обратно.

    Чуть позже появится еще один момент.
    Для правильной работы некоторых строковых функций необходимо правильно установить

    4. setlocale()

    Избежать большинства проблем можно если изначально работать с UTF8 везде.
     
  12. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Оу! Вижу мой пост как-то оживил общение тут :)
    Небуду тут попунктам отвечать на все закидоны , что б уж совсем оффтоп неполучился, скажу лишь что я нигде неговорил что я незнаю английксий. и2. знаки препинания и прочую грамматику каждый расставит для себя сам в меру своей образованности, так что я не заморачиваюсь на этот счет.

    Мануалы невсегда дают решение возникших проблем (как тут уже ктото верно подметил). Посему всеравно считаю первый ответ в этом посте бессмысленным.
    Вот у меня возникла ситуация когда в менюшках текст показываетса в одной кодировке а сам текст в другой, и при переключении кодировок отображаетса то меню на русском а текст кракозябрами то наоборот. База данных тут незадействована, так что здесь чисто настройка ПХП. И в мануале ну ни слова про это нету. И ненадо меня отправлять в гугл я и без вас там побывал:)
     
  13. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    В мануалах обычно ничего не говориться про криворуких авторов.

    Настройки PHP в этом случае "чисто" не виноваты. Виной всему тупость отдельных людей.
     
  14. nimistar

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

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Simpliest +1
     
  15. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Интересно какая польза от двух последних коментов? Ребята вы что пытаетесь тут кому-то доказать свою гениальность или самоутвердитса для себя лично?
    Ну так нада делом доказывать! Напишите что да как исправить и все увидят что вы что-то умеете кроме написать "вы все дураки и только мы умные"!
    К сожалению пока что у меня о вас складываетса именно такое мнение :)
     
  16. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Парень, пришел качать права? Качай наздоровье.
    Мы помогаем их качать. Потом смело сможешь сказать какие тут все гады.

    А если пришел за помощью, то начинать надо было с другого.
    Поэтому берем руки, вытаскиваем их оттуда где они у вас сейчас и делаете.

    Уже сказали - настройки PHP тут не причем. Ковыряй свои скрипты.

    P.S. Я уже писал, но, видимо, невнимательно читаете.
     
  17. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Ну чтож последний комент окончательно убедил меня в том , что некоторые люди тут отписывают только ради того, чтобы хоть както самоутвердитса, да вот только на этом форуме уважают людей с ярким умом а не с болтливым языком.
    Посему вам стоило бы поискать себе форум попроще для самоутверждения. Попробуйте поумничать на однокласниках, может там от вас какаято польза будет.
    Лично для меня вы сдесь абсолютно бесполезны.
     
  18. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Мальчик, я и не должен быть полезным для отдельных жителей альпийских областей Франции.
    Они меня просто не понимают :)

    Но наивно полагают, что своими детскими представлениями о мире могут добиться помощи
    Я уже несколько не в том возрасте, когда мне надо кому-то что-то доказывать. Хочешь чтобы тебе что-то лично я доказал? Нет проблем - 20 у.е. на счет, исходники в публичный доступ и твоя данная конкретная проблема решится в течении пары минут.

    Хочешь помощи - извиняешься за свой тупой первый пост в этом топике и нормально задаешь свой тривиальный вопрос о кодировках, который, впрочем, решается и самостоятельно за 1 минуту.

    Если ноль полный, то об этом стоит уведомить отдельно и сказать - "ребята, я ноль полный разжуйте мне по шагам что не так". В противном случае получишь ответ вида:
     
  19. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Ну если тебе никому ненадо ничего доказывать , особенно "мальчикам с альпийских гор" чтож ты так написал то много всего тут?
    А если твои "взрослые" представления о жизни не дают тебе понять что идея этого форума заключаетса в том, чтоб как раз помагать новичкам ( и нетолько) в програмировании на PHP то наверное проблема всетаки в твоих представлениях а не моих.
    А теперь по буквам: а в т о р ф о р у м а х о т е л с д е л а т ь П О Л Е З Н Ы Й р е с у р с. И это у него получилось. Форум действительно приносит пользу людям, а вот твои рассуждения на философские темы тут Б Е С П О Л Е З Н Ы.
    Поэтому я и написал что ты для меня бесполезен , в надежде что до тебя дойдет этот смысл, но видимо несудьба.
    Если я захочу послушать чьито излияния на тему "Трудно быть Богом" или "что мне делать в моем возрасте" или "дайте мне 20 баксов плз за чтоне-будь я есть хочу" то я поискал бы себе другой форум для этого.
    И насчет полный ноль это пусть тебе жена твоя рассказывает :lol:
    Чтоже касаетса моего вопроса то я уже как-то давно сам разобрался, как видиш даже непришлось умалять великого Simpliest.
     
  20. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Повторяю, это принципы работы форума, любого нормального форума в том числе и этого.

    Поэтому... стена далеко?

    Убейся об нее и не засоряй собой мир :)
     
  21. dimanger

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

    С нами с:
    4 янв 2010
    Сообщения:
    28
    Симпатии:
    0
    Адрес:
    Хабаровский край
    Попробуй так
    Код (Text):
    1. <?php
    2. $db = mysql_connect("localhost","USER","PASS") or die('Connection error.');
    3. mysql_query("SET NAMES 'cp1251'");
    4. mysql_select_db("phpblog",$db);
    5. ?>
    и что б еще вот эти строчки были всегда в страничке
    Код (Text):
    1.  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    3.  
    4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    База и таблица должна быть в кодировке cp1251_general_ci (все таблицы)