Avatar ·

Wie man volle UTF-8-Unterstützung von PHP über MySQL bis zum Browser ohne Zeichensalat richtig einrichtet

Hallo zusammen! Ich bin ein PHP-Anfänger und kämpfe seit zwei Wochen mit einem Kodierungsproblem. Die Website ist auf Russisch, die Datenbank ist MySQL, ich habe scheinbar alles eingerichtet, aber beim Abrufen von Daten aus der DB erscheinen auf der Seite Fragezeichen oder Kauderwelsch wie "Р РµСально?". \n\nSo verbinde ich mich zur Datenbank:\n\n```php\n$db = new mysqli('localhost', 'user', 'pass', 'mydb');\n$db->query("SET NAMES cp1251");\n```\n\nDie Dateien speichere ich in UTF-8 ohne BOM, im head der Seite setze ich ``. Aber wenn ich russischen Text über ein Formular eingebe und speichere, wird er in der DB korrekt angezeigt, auf der Seite jedoch nicht. Wenn ich Daten direkt über phpMyAdmin eingebe, werden sie auf der Seite korrekt dargestellt.\n\nIch habe versucht, `cp1251` auf `utf8` zu ändern – dann wird alles in der DB kaputt, aber auf der Seite funktioniert es. Ich habe `SET NAMES utf8mb4` ausprobiert – es hat ganz aufgehört zu funktionieren. Was mache ich falsch? Wie kann ich erreichen, dass Russisch überall funktioniert: in der DB, auf der Seite und beim Absenden von Formularen? Gibt es vielleicht eine Checkliste oder eine vollständige ...