Задать вопрос
@Kennius
Начинающий фронт-эндер

Проблема с кодировкой русских символов: почему в базе и на выходе из формы знаки вопросов?

Есть форма которая отправляет данные в базу но и в базе и на выходе только знаки вопросов

<form action='update_user.php' method='post'>
 Имя:<strong>$myrow[name]</strong><br>
<input name='name' type='text'>
<input type='submit' name='submit' value='изменить'><br>
</form>
<br>


Обработчик
////////////////////////
////////ИЗМЕНЕНИЕ имени
////////////////////////

else if (isset($_POST['name']))//Если существует имя
      {
$name = $_POST['name'];
$name = stripslashes($name);
$patronymic = trim($name);//удаляем все лишнее
if ($name == '') { exit("Вы не ввели имя");} //если имя не введен, то выдаем ошибку

if (strlen($name) < 2 or strlen($name) > 15) {//проверка на количество символов
exit ("Имя должено состоять не менее чем из 2 символов и не более чем из 15."); //останавливаем выполнение сценариев
}


$result4 = mysql_query("UPDATE users SET name='$name' WHERE login='$old_login'",$db);//обновляем имя
if ($result4=='TRUE') {//если верно, то обновляем его в сессии
$_SESSION['name'] = $name;

if (isset($_COOKIE['password'])) {
setcookie("password",$_POST['password'], time()+9999999);//Обновляем имя в куках, если они есть
}


echo "<html><head><meta http-equiv='Refresh' content='5; URL=page.php?id=".$_SESSION['id']."'></head><body>Ваше имя изменен! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='page.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}//отправляем обратно на его страницу

      }


База данных

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(15) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `avatar` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `activation` int(1) NOT NULL DEFAULT '0',
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `phone` varchar(15) NOT NULL,
  `sex` text CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL,
  `name` varchar(25) NOT NULL,
  `surname` varchar(80) NOT NULL,
  `patronymic` varchar(80) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=42 ;
  • Вопрос задан
  • 2838 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Во-первых: начните использовать кодировку utf-8 с ней меньше проблем.
Во-вторых: начните использовать трассировку xDebug - так легко найти причину ошибки.
В-третьих: выполните перед всеми запросами запросSET NAMES 'UTF8'.
В-четвёртых: выставляем кодировку в заголовкеheader("Content-type: text/html; charset=utf-8");
В-пятых: если ничего не помогает используем iconv
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Страницы наверно в UTF8 а база в CP1251.
Тут надо гуглить iconv
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы