За последние 24 часа нас посетили 63035 программистов и 1741 робот. Сейчас ищут 904 программиста ...

проблемы с кодировкой [сил уже нет...]

Тема в разделе "PHP и базы данных", создана пользователем firebird, 19 фев 2013.

  1. firebird

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

    С нами с:
    6 фев 2013
    Сообщения:
    17
    Симпатии:
    0
    Вот,пришлось заглянуть на этот чудесный форум,в поиске решения моей проблемы!Вообщем вы - мое последнее спасение.
    Уже что только не пробывал,читал много статей и форумов,но у меня какой-то другой случай походу.Проблема в том,что есть скрипт,который редактирует данные юзера и это все идет в базу данных,так вот там это показываеться иероглифами,кракозяблями,вот так вот к примеру:''÷ó&#233''.
    И сам скрипт тоже после нажатия на кнопку"обновить" показывает тоже,вместо имени Колян вот это ''÷ó&#233''.
    А если я эту колонку с иероглифаме в базе вручную изменю на "Колян"к примеру,то все выводиться хорошо,русскими буквами,но как только опять нажмешь обновить на сайте,то кодировка слетает.
    Что я пробывал?
    --создавал заного таблицы в Cp1251 а так же в Utf8,менял сравнение и сапоставление кодировки соединения с MysqL.
    --header('Content-Type: text/html; charset=windows-1251');
    --В файле где происходит коннект к базе,писал mysql_query("SET NAMES 'CP1251'"); и наоборот.
    --создавал файл .htaaccess и в нем писал AddDefaultCharset windows-1251 и наоборот ЮТФ8.
    ----------------------------------------------------------------------------------------------------------------------
    Сейчас на данный момент

    --Кодировка сервера: UTF-8 Unicode (utf8) (ее незнаю как менять,наверное никак)
    --Сравнение таблиц: utf-8_unicode_ci
    --при вызове SHOW VARIABLES LIKE 'character%' показывает данные:
    Variable_name Value
    character_set_client utf8
    character_set_connection utf8
    character_set_database utf8
    character_set_filesystem binary
    character_set_results utf8
    character_set_server utf8
    character_set_system utf8
    character_sets_dir /usr/share/mysql/charsets/
    -----------------------------------------------------------------------------------------------------------------------------

    уже незнаю что и делать,запутался,3-ий день сижу и вот над этим гадаю,вроде все расписал чтобы вы поняли,главное что я искал на форумах и делал так как там написано,но...к сожалению.надеюсь на вас,вы спецы,думаю знайте как это исправить...не я первый с такой проблемой,это я исходя из того что я видел и читал,понял.
    Спасибо!
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это html-сущности. вопрос: когда кириллица в них переводится? скрипт простой, без извращений? подключился - вставил-вынул - показал?
     
  3. firebird

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

    С нами с:
    6 фев 2013
    Сообщения:
    17
    Симпатии:
    0
    спасибо,что откликнулся)
    Да,вот я уже начитался,что это сущность этакая.Значит ввожу я данные ,допустим имя,фамилия на русском ,нажимаю 'обновить информацию' и сразу же в базе моментально эти Хтмл сущности.Да нет,вроде без извращений,вот выкладываю..

    это функции..

    //Gets information
    function fetch_users(){
    $result = mysql_query('SELECT `user_id`, `username` FROM (`users`)');


    $users = array();

    while (($row = mysql_fetch_assoc($result)) !== false) {
    $users[] = $row;
    }
    return $users;

    }

    function fetch_user_info($user_id){
    $user_id = (int)$user_id;

    $sql = "SELECT `username`,`first_name`, `car`, `about` FROM `users` WHERE `user_id` = {$user_id}";


    $result = mysql_query($sql);

    return mysql_fetch_assoc($result);

    }

    //Updates the current profile users info
    function set_profile_info($car,$first_name,$about){

    $car = mysql_real_escape_string(htmlentities($car));
    $username = mysql_real_escape_string(nl2br(htmlentities($username)));
    $about = mysql_real_escape_string(htmlentities($about));

    $sql = "UPDATE `users` SET `car` = '{$car}', `first_name` = '{$first_name}', `about` = '{$about}' WHERE `user_id`= {$_SESSION['user_id']}";

    mysql_query($sql);

    }


    а это файл edit_profile.php (где собственно я и изменяю данные юзера)в форме..

    if (isset($_POST['car'],$_POST['first_name'],$_POST['about'])){
    $errors = array();

    if (empty($errors)){
    set_profile_info($_POST['car'],$_POST['first_name'],$_POST['about']);
    }

    $user_info = array(

    'car' =>htmlentities($_POST['car']),
    'first_name' =>htmlentities($_POST['first_name']),
    'about' =>htmlentities($_POST['about'])
    );

    }else{
    $user_info = fetch_user_info($_SESSION['user_id']);

    }
    ?>
    <?php

    if (isset($errors) === false){
    echo'Нажми чтобы редактировать свой профиль.';
    }else if (empty($errors)){
    echo'Your profile updated';
    }else{
    echo'<ul><li>', implode('</li><li>',$errors),'</li></ul>';
    }
    ?>

    <form action="" method="post">
    <label id="car" for="car">car:</label>
    <input type="text" name="car" id="car" value="<?php echo $user_info['car'];?>"/>

    <label id="first_name" for="first_name">First_name:</label>
    <input type="text" name="first_name" id="first_name" value="<?php echo $user_info['first_name'];?>"/>

    <label for="about">About me:</label>
    <textarea name="about" id="about" rows="14" cols="50"><?php echo $user_info['about'];?></textarea>

    <input type="submit" value="Update" />
    </form>
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Код (PHP):
    1. $username = mysql_real_escape_string(nl2br(htmlentities($username)));
    и
    Код (PHP):
    1. $user_info = array(
    2. 'car' =>htmlentities($_POST['car']),
    3. 'first_name' =>htmlentities($_POST['first_name']),
    4. 'about' =>htmlentities($_POST['about'])
    5. );
    это оно. зачем оно вам?

    Добавлено спустя 2 минуты 44 секунды:
    перед записью в базу: НЕ НАДО НИКАКИХ htmlentities!
    перед выводом на страницу: почему не htmlspecialchars и почему не указываете кодировку?
    берегите силы, читайте документацию по функциям
     
  5. firebird

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

    С нами с:
    6 фев 2013
    Сообщения:
    17
    Симпатии:
    0
    это оно?как убить это?
    если честно я делал этот скрипт по уроку буржуйскому..вот собственно как там разьясняли так и сделал.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    почитайте документацию по функциям. хотябы здесь на форуме -- вверху есть строка поиска, которую никто не замечает...

    если я вам скажу "убейте человека", как вы поступите?
     
  7. firebird

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

    С нами с:
    6 фев 2013
    Сообщения:
    17
    Симпатии:
    0
    хорошо,почитаю.Спасибо вам,что откликнулись и дали совет.

    Добавлено спустя 27 минут 54 секунды:
    заменил все строчки htmlentities на htmlspecharacters!и все заработало!спасибо!емае,3 дня промучился,а это вот оно в чем дело!а если не трудно.то хотелось бы узнать как кодировку прописать,вернее куда.Я прописал..но незнаю правильно или нет..
    вот..или это бред?

    'car' =>htmlspecialchars($_POST['car'],ENT_QUOTES, 'cp1251' ),
    'first_name' =>htmlspecialchars($_POST['first_name'],ENT_QUOTES, 'cp1251'),
    'about' =>htmlspecialchars($_POST['about'],ENT_QUOTES, 'cp1251')