Tach!
Sofern das ein normales
input
oder einetextarea
ist, kommen die Daten also einem Reintext-Kontext in den SQL-Kontext.
Ja, wenn man UTF-8 als Zeichenkodierung (korrekt) verwendet. Oder wenn man ISO-8859-1 verwendet und die Nutzer keine Zeichen außerhalb davon eingeben.
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="UTF-8">
</head>
<body>
<form accept-charset="ISO-8859-1" action="">
<button type="submit" name="test" value="😀 & 😒">Send ISO</button>
</form>
<form action="">
<button type="submit" name="test" value="😀 & 😒">Send</button>
</form>
<?php
echo $_REQUEST['test'] . ' - ' . urlencode($_REQUEST['test']);
Das erste Formular sendet die Smileys als NCR und das & unmaskiert dazwischen, das zweite als UTF-8-kodierte Zeichen. Alternativ kann man die Seite auch als ISO-8859-1 und das Form ohne accept-charset ausliefern lassen und die Zeichen über ein Input-Feld eingeben, um das gleiche Problem zu haben.
Fazit: UTF-8 verwenden. Und wenn man solche Smileys auch in MySQL/MariaDB speichern möchte, muss man utf8mb4 und nicht nur utf8 verwenden.
dedlfix.