Вот,пришлось заглянуть на этот чудесный форум,в поиске решения моей проблемы!Вообщем вы - мое последнее спасение. Уже что только не пробывал,читал много статей и форумов,но у меня какой-то другой случай походу.Проблема в том,что есть скрипт,который редактирует данные юзера и это все идет в базу данных,так вот там это показываеться иероглифами,кракозяблями,вот так вот к примеру:''÷óé''. И сам скрипт тоже после нажатия на кнопку"обновить" показывает тоже,вместо имени Колян вот это ''÷óé''. А если я эту колонку с иероглифаме в базе вручную изменю на "Колян"к примеру,то все выводиться хорошо,русскими буквами,но как только опять нажмешь обновить на сайте,то кодировка слетает. Что я пробывал? --создавал заного таблицы в 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-ий день сижу и вот над этим гадаю,вроде все расписал чтобы вы поняли,главное что я искал на форумах и делал так как там написано,но...к сожалению.надеюсь на вас,вы спецы,думаю знайте как это исправить...не я первый с такой проблемой,это я исходя из того что я видел и читал,понял. Спасибо!
это html-сущности. вопрос: когда кириллица в них переводится? скрипт простой, без извращений? подключился - вставил-вынул - показал?
спасибо,что откликнулся) Да,вот я уже начитался,что это сущность этакая.Значит ввожу я данные ,допустим имя,фамилия на русском ,нажимаю 'обновить информацию' и сразу же в базе моментально эти Хтмл сущности.Да нет,вроде без извращений,вот выкладываю.. это функции.. //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>
Код (PHP): $username = mysql_real_escape_string(nl2br(htmlentities($username))); и Код (PHP): $user_info = array( 'car' =>htmlentities($_POST['car']), 'first_name' =>htmlentities($_POST['first_name']), 'about' =>htmlentities($_POST['about']) ); это оно. зачем оно вам? Добавлено спустя 2 минуты 44 секунды: перед записью в базу: НЕ НАДО НИКАКИХ htmlentities! перед выводом на страницу: почему не htmlspecialchars и почему не указываете кодировку? берегите силы, читайте документацию по функциям
это оно?как убить это? если честно я делал этот скрипт по уроку буржуйскому..вот собственно как там разьясняли так и сделал.
почитайте документацию по функциям. хотябы здесь на форуме -- вверху есть строка поиска, которую никто не замечает... если я вам скажу "убейте человека", как вы поступите?
хорошо,почитаю.Спасибо вам,что откликнулись и дали совет. Добавлено спустя 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')