За последние 24 часа нас посетили 16466 программистов и 1551 робот. Сейчас ищут 2062 программиста ...

Помогите с кодировкой.

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

  1. Navigator

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

    С нами с:
    1 ноя 2008
    Сообщения:
    3
    Симпатии:
    0
    Прошу администраторов не удалять тему, советы из прошлых тем не помогают.
    Стоит PHP5.2.6, MySQL 4.1.22.
    MySQL-кодировка: Windows Cyrillic (cp1251).
    Сопоставление соединения с MySQL: cp1251_general_ci.
    в корн. каталоге лежит .htaccess :
    Код (Text):
    1.  
    2. CharsetPriority cp1251
    3. CharsetDefault cp1251
    4. CharsetSourceEnc cp1251
    5. AddDefaultCharset cp1251
    вначале каждой страницы:
    Код (Text):
    1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    и
    PHP:
    1.  
    2.  include_once ("../config.php"); со следующим содержанием:
    3. ...
    4.         $mysql_connect = mysql_connect($dbhost, $dbusername, $dbpass);
    5.         $selectdb = mysql_select_db($dbname);
    6.  mysql_query("SET NAMES 'cp1251';");
    7.  mysql_query("SET CHARACTER SET 'cp1251';");
    8.  mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';");
    9. ?>
    10.  
    Если sqlзапросом в phpMyAdmin занести строку в таблицу, то сохраняется в БД и потом выводится строка по-русски, а если скриптом заносится
    PHP:
    1. $sql = "INSERT INTO table (name) VALUES ('$name')";
    ,то сохраняется в БД - &ecirc;&icirc;&eth;&agrave;&aacu
    и выводится потом на страницу - êîðà&aacu.
    Не могу понять, что за напасть такая?[/sql][/php]
     
  2. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    В mysql_query не надо ставить ; в конце запроса.
    А кодировка полей в таблицах какая?
     
  3. Navigator

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

    С нами с:
    1 ноя 2008
    Сообщения:
    3
    Симпатии:
    0
    Это одна из версий запроса, до этого были без ;, но разницы никакой, запрос и так и так работает.
    При создании таблиц:
    [sql]
    CREATE TABLE table (
    ...
    PRIMARY KEY (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_ci;
    [/sql]
    phpMyAdmin показывает значение полей
    name varchar(25) cp1251_general_ci ....
     
  4. dAllonE

    dAllonE Guest

    Сам скрипт точно в cp1251 ?
     
  5. Navigator

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

    С нами с:
    1 ноя 2008
    Сообщения:
    3
    Симпатии:
    0
    Спасибо всем за отклик, нашел причину.
    Все дело оказалось в htmlentities.
    Не знал, что эта функция перекодирует в т.ч. и русские буквы.
    Заменил на htmlspecialchars , добавил третий параметр cp1251,
    и все заработало.
    А я два дня издевался над БД ....