Bonjour à tous
Je suis sur un mutu depuis près de 20 ans sur OVH, et j'ai de nombreux sites sur cet hébergement, j'ai donc du attendre de pouvoir tout refondre pour faire ENFIN une migration de PHP 5 vers PHP 7.3. J'ai effectué la bascule ces derniers jours sans aucun problème... mais j'ai un souci que je n'arrive pas à résoudre depuis qui est apparu !
Depuis le passage du site en PHP 7, j'ai les fameux diamants noirs avec un point d'interrogation dedans, signe de caractères spéciaux non supportés par le charset, sur tout ce qui provient de ma BDD sql et qui contient des caractères "non latin".
Projet Deluxe: plus de 700 prototypes et �Beta Build� de...
Je précise que le site fonctionnait évidemment très bien avant la migration, je n'ai rien changé d'autre, et que tout a toujours été passé en UTF8 partout : en tête de site dans mes appels php, je fais un mysqli_set_charset
en utf8, j'ai unsetlocale
forcé sur fr_FR.utf8, mes sqli_query
ont un SET NAMES en utf8 et dans les headers HTML de mes templates ensuite, je suis aussi en UTF8.
Ma database + mes tables sont toutes en collation utf 8, et le contenu qui se trouve dedans est censé l'être aussi. J'ai tenté des tas de méthodes trouvées partout sur internet (dont un script de conversion latin1 vers blob vers utf8, idem de utf8 vers latin1 vers utf8 etc) mais rien n'y fait, quand je les applique, le script tronque simplement les valeurs dès qu'il repère un mauvais caractère (par exemple, un é)
La seule solution viable pour l'instant, c'est quand j'ai appliqué un ini_set('default_charset', 'ISO-8859-1')
en tête de page. A ce moment, tout ce qui provient de la BDD (en utf8) a été affiché correctement sur le site... mais dans ce cas, le reste de mon site (ce qui est en dur dans mon code HTML) affiche des caractères bizarres (Vidéos à la place de Vidéos ; 9,99€ à la place de 9,99€)
Est-ce qu'une solution pratique est possible ? Avez-vous une idée d'où cela provient ? Je me creuse la tète depuis trois jours mais je n'ai jamais eu de bugs de charset de ce type depuis 15 ans donc j'avoue sécher.
Merci par avance