Этот вопрос закрыт для ответов, так как повторяет вопрос Почему вместо кириллицы знаки вопросов?
SophiaS
@SophiaS
Учусь на web-дизайнера

При регистрации юзера его имя на русском передаётся в базу данных в неправильной кодировке. Что делать?

В базе данных везде стоит кодировка utf8_general_ci, в html файле стоит utf-8, при подключении к базе данных пробовала $mysql->query("SELECT NAMES 'utf8'") (utf8 пробовала вводить и прописными, и строчными, и с кавычками, и без), $mysql->set_charset("utf8"),
$mysql->query('set character_set_results = "utf8"')
... Первое я знала изначально, но оно не сработало. Нашла ещё кучу разных вариантов, но, фиг знает, что я правильно ввела, что нет...

60a2e4b74faaa985289557.png

<?php
	$name = $_POST['name'];
	$login = $_POST['login'];
	$password = $_POST['password'];
	$sex = $_POST['sex'];
	$area = $_POST['area'];
	$town = $_POST['town'];
	$telephone = $_POST['telephone'];
	$email = $_POST['email'];

	$password = md5($password."usyvi462");

	$mysql = new mysqli('localhost', 'root', '', 'yoursmilebase');
	$mysql->query("INSERT INTO `users` (`login`, `password`, `name`, `sex`, `area`, `town`, `telephone`, `email`) VALUES('$login', '$password', '$name', '$sex', '$area', '$town', '$telephone', '$email')");
	$mysgl->close;

	header('Location: user.php');
?>


Также номера телефонов все одинаковые в базе данных!
  • Вопрос задан
  • 122 просмотра
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Для телефона следует использовать varchar вместо integer.
и почтайте что-нибудь про SQL-injection и prepared statement
Ответ написан
@none7
Сперва выполните в phpMyAdmin запрос
UPDATE `users` SET `name`=CONVERT(UNHEX(HEX(CONVERT(`name` using latin1))) using cp1251);

После этого уже добавляйте $mysql->query("SELECT NAMES 'utf8'") перед INSERT.
В третьих Ваш html документ распознаётся как windows-1251. Возможно, что сервер отправляет в Content-Type кодировку windows-1251, а она имеет приоритет перед тэгами META, смотрите в отладчике браузера. Можете добавить в форму скрытый input c юникодным символом и проверять на сервере в правильной ли он кодировке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nazares
@nazares
Web-Developer
В базе данных везде стоит кодировка utf8_general_ci,
ну походу не везде. У вас там ISO-8859-1 где-то проскакивает Ñîôèÿ = София . https://webformyself.com/kodirovka-bazy-dannyx-mys...
Ответ написан
SagePtr
@SagePtr
Еда - это святое
А вообще, лучше использовать PDO, там сразу при подключении можно кодировку задать.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
Cbonds.ru Санкт-Петербург
от 160 000 ₽
от 2 200 до 3 500 $
Denero Санкт-Петербург
от 40 000 до 60 000 ₽