Avatar ·

Comment configurer correctement le support complet de l'UTF-8 de PHP à MySQL et au navigateur sans caractères illisibles ?

Bonjour à tous ! Je suis un développeur PHP débutant, et cela fait déjà deux semaines que je lutte avec un problème d'encodage. Le site est en russe, la base de données est MySQL, j'ai tout configuré en apparence, mais lors de l'affichage des données de la base sur la page, des points d'interrogation ou des caractères illisibles comme "Р РµСально?" apparaissent. Voici comment je me connecte à la base : ```php $db = new mysqli('localhost', 'user', 'pass', 'mydb'); $db->query("SET NAMES cp1251"); ``` Je sauvegarde les fichiers en UTF-8 sans BOM, et dans l'en-tête de la page je mets ``. Mais lorsque je saisis du texte russe via un formulaire et que je le sauvegarde, il s'affiche correctement dans la base, mais pas sur la page. En revanche, si je saisis les données directement via phpMyAdmin, elles s'affichent correctement sur la page. J'ai essayé de changer `cp1251` en `utf8` — alors tout se casse dans la base, mais sur la page c'est correct. J'ai essayé `SET NAMES utf8mb4` — cela a complètement cessé de fonctionner. Qu'est-ce que je fais de travers ? Comment faire pour que le russe fonctionne partout : dans la base, sur la page, et lors de l'envoi de formulaires ? Existe-t-il une checklist ou une solution complète ?