Я знаю, что об этом уже много раз спрашивали, и я перепробовал почти все из них, но все изменилось, поэтому, пожалуйста, продолжайте читать!Не отрицайте!Как я уже говорил, я испробовал большинство решений!
Я использовал utf8mb4 в качестве кодировки, а character_set_connection и character_set_database были установлены как utf8mb4.Кодировка на моих веб-страницах установлена на utf8.Я использовал PDO, и когда я открываю соединение с базой данных, я использую utf8mb4 в качестве кодировки.Столбцы в таблицах также имеют в качестве параметров сортировки utf8mb4_unicode_ci. Используемый механизм хранения - MyISAM.
Разница возникает из-за того, что я не могу редактировать character_set_server (так как я на общем хостинге), он по умолчанию установлен как utf8 исервер collation_server по умолчанию - utf8_unicode_ui.Я не могу изменить это никакими средствами.Он работал нормально на локальном хосте с похожими символьными переменными.
Редактировать:
Переменная подключения $ conn, которая открывается как
$db_server = 'localhost';
$db_name = 'userdb';
$db_encoding = 'utf8mb4';
$db_user = 'test';
$db_pass = 'password';
$conn = new PDO('mysql:host='.$db_server.';dbname='.$db_name.';charset='.$db_encoding,$db_user,$db_pass);
Форма для принятияввод просто как
<form action="" method="POST" accept-charset="UTF-8"><input type="text" class="form-control" name="inp"></form>
И ввод обрабатывается как
$test = $_POST['inp'];
$it = $conn->prepare("INSERT INTO tbl_test(message) VALUES(?)");
$it->bindParam(1,$test,PDO::PARAM_STR);
if($it->execute()) echo $test;
else echo 'Error!';
Так что вопрос:
1. Почему проблема возникает, даже когда яиспользовали везде где это возможно utf8mb4 и utf8mb4_unicode_ci?
2. Может ли это быть проблемой php, а не проблемой MySQL, поскольку проблема возникает во время INSERTION в базе данных (я использовал функции stripslashes (), trim () и htmlspecialchars () длястроки)?
3. Интересно, что смайлики (символы Юникода) прекрасно работают на одной странице сайта, которая является страницей чата.Может ли это быть из-за шифрования?Кажется, нет никакого возможного объяснения!
Просто имейте в виду, прежде чем ответить, что я перепробовал почти все решения на SO, и, поскольку я на виртуальном хостинге, я не могу редактировать файл конфигурации MySQL.Пожалуйста, ответьте, я застрял на этом более 3 дней!