За последние 24 часа нас посетили 17495 программистов и 1724 робота. Сейчас ищут 907 программистов ...

Опять эти кодировки(

Тема в разделе "PHP и базы данных", создана пользователем Alimoff, 27 янв 2009.

  1. Alimoff

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

    С нами с:
    27 окт 2008
    Сообщения:
    26
    Симпатии:
    0
    Здравствуйте, очередная проблема с кодировкой.

    База данных - MySQL;
    Кодировка (по идее) - cp1251;

    Вместо текста который выводится из БД - Каракули (На кириллице). Причем каждый раз они разные (а иногда выводится и нормально, но очень редко). В системных переменных MySQL кроме character set ничего насчет кодировки нет. На SET NAMES cp1251 выводит ошибку, что такой переменной нет. Делаю set character set = cp1251_koi8 - толку 0.

    Я уже второй день никак не могу с этим разобратся, подскажите, в чем может быть причина?
     
  2. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Код (Text):
    1. header('Content-Type: text/html; charset=windows-1251');
    +
    Код (Text):
    1. mysql_query("SET NAMES cp1251");
     
  3. Alimoff

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

    С нами с:
    27 окт 2008
    Сообщения:
    26
    Симпатии:
    0
    Пробовал - не помогает
     
  4. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Alimoff, код слабо показать?
     
  5. Alimoff

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

    С нами с:
    27 окт 2008
    Сообщения:
    26
    Симпатии:
    0
    Там дело скорее не в коде. Иногда (ооооочень редко) страница выводится нормально.
     
  6. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Alimoff, тогда наслаждайтесь этими моментами :D
    Все телепаты в отпуске...
     
  7. Alimoff

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

    С нами с:
    27 окт 2008
    Сообщения:
    26
    Симпатии:
    0
    Ok, буду разбиратся сам(
     
  8. ZZZubec

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

    С нами с:
    28 мар 2007
    Сообщения:
    140
    Симпатии:
    0
    если данные были в несены в базу в одной кодировке, то в другой не удасться, скоко не меняй значение.
    т.е.
    if( "кодировка данных" == "кодировка выставленная тобой" == "кодировка сайта" ) echo "счастье!" else die();
     
  9. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    В базе данные хранятся в одой кодировке, а вот вносить и выбирать можно в любой нужной кодировке.
     
  10. neyr00n

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

    С нами с:
    29 ноя 2007
    Сообщения:
    106
    Симпатии:
    0
    phpmyadmin'ом пдцепись к базе и посмотри, что он тебе скажет. в какой кодировке и что да как..
     
  11. gfk

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

    С нами с:
    25 фев 2007
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    USA
    Я решил эту проблему так, в файл который соединяется с базой добавил это

    <?php

    $dbhost = "localhost";
    $dbname = "baza";
    $dbuser = "root";
    $dbpass = "";


    $link = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
    mysql_query ("SET CHARACTER SET 'cp1251'", $link);
    mysql_query ("set character_set_client='cp1251'");
    mysql_query ("set character_set_results='cp1251'");
    mysql_query ("set collation_connection='cp1251_general_ci'");
    mysql_query ("SET NAMES cp1251");
    mysql_select_db($dbname,$link) or die("Could not find db");
    if (!headers_sent())
    {
    session_start();
    };
    ?>