Page 1 sur 1

Soucis de caractères français sur le site

Publié : 26 nov. 2018 21:11
par fneck
Hello, j'ai besoin de l'aide de spécialistes PHP MySQL pour le site. Je viens de constater que les accents de mon site web, et d'une manière générale tous les caractères spéciaux français, sont altérés et remplacés par des losanges avec des points d'interrogation. J'ai bien compris qu'il s'agissait d'un soucis d'encodage de caractères mais je n'arrive pas à le résoudre. Je ne sais pas si c'est ainsi depuis le changement d'hébergeur ?

Ci-dessous une copie d'écran pour bien visualiser le problème :
Image
issue de cette page https://www.system-cfg.com/detailcollec ... ?ident=223

En regardant de plus près, on constate que les accents issus du code html ou php sont corrects (Accès forum, Accès base de données, etc...).
Ce qui pose problème c'est le contenu qui est issu de la base de donnée MySQL.

Dans la partie "head" de mon code on retrouve systématiquement :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Dans la structure de la base de données on voit un "interclassement" en "utf8_bin".
Initialement ce dernier était en "latin1_swedish_ci", je l'ai changé hier pour être comme sur le forum où il n'y a pas le problème mais ça n'a rien résolu.

Je sèche, des idées ?

Merci.

Re: Soucis de caractères français sur le site

Publié : 26 nov. 2018 22:28
par Papy.G
J'y connais rien en dev web, mais l'inspecteur de Mozilla me met en évidence un problème de guillemets insuffisants, dans le head, troisième ligne:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Manque le guillement après HTML, et celui avant utf-8.

Encore un problème de ponctuation… :mrgreen:

Edit: Ligne suivante, même problème. :roll:

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 07:47
par fneck
Je regarderai ce soir...

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 08:24
par __sam__
Papy.G a écrit : 26 nov. 2018 22:28 J'y connais rien en dev web, mais l'inspecteur de Mozilla me met en évidence un problème de guillemets insuffisants, dans le head, troisième ligne:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Manque le guillement après HTML, et celui avant utf-8.
Non je pense que la syntaxe est correcte, cf: https://www.w3.org/International/questi ... clarations qui présente la même chose.

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 15:05
par hlide
Si les caractères losange-question ne sont pas à la base du UTF-8, ça ne fonctionnera pas non plus.

Si tu utilises notepad++ par exemple, tu peux visualiser en changeant l'encoding et vérifier lequel te permet de voir les accents correctement. Un fois fait ça, tu peux ensuite demander à convertir en UTF-8 pour que ces accents soient en UTF-8.

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 15:12
par hlide
Je viens de tester sur Notepad++ :

Code : Tout sélectionner

<td class="tab_right">RAM 256 Ko <br>extensible � 512 Ko sur carte m�re<br>ROM ??? Ko </td>
Il me confirme que ce n'est pas de l'UTF-8. Il y a un mélange entre ceux en UTF-8 et non UTF-8. Ça ne va pas être simple à convertir du coup.

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 15:42
par hlide
C'est une page "auto-générée" (auto-construite pour les puristes de la langue) ? comme tu l'as dit, ce problème ne vient qu'avec l'extraction de ta base de données. J'ai peur que l'extraction fasse la conversion et génère un mauvais code UTF-8 parce que le caractère à la source n'est pas lu avec le bon codec d'origine. J'ai essayé avec l'encoding de NotePad pour trouver ce que c'est mais sans résultat.
Vous devez utiliser le bon code caractère « é » ou « e accent aigu » sinon, vous risquez d'avoir des caractères mal affichés en Css, Html ou Javascript comme peut le monter le caractère encodé en ISO-8859-1.
En ISO-8859-1, ça donne précisément ce symbole. J'ai l'impression qu'il y a eu conversion du ISO-8859-1 vers UTF-8 lors de l'extraction alors que ce n'était pas du ISO-8858-1 (code \uE9 transformé en \uFFFD).

Re: Soucis de caractères français sur le site

Publié : 27 nov. 2018 19:15
par fneck
Merci pour vos différentes réponses 8)

Le problème était dans la requête php vers la base de données. A partir de je ne sais plus quelle version de php, la fonction "mysql" qui permet de passer les commandes à la base de données a été remplacé par "mysqli". Or celle-ci nécessite maintenant de préciser l'encodage lors de la connexion à la base par l'ajout d'une commande : mysqli_set_charset( $nom_de_la_connection, "UTF8" );

Information trouvée ici : https://openclassrooms.com/forum/sujet/ ... yadmin-php

Maintenant c'est bon, mais je ne comprends pas comment je n'ai pas vu cela plus tôt, puisque l'introduction dans mon code de "mysqli" date effectivement de la migration du site vers le nouvel hébergeur... :cry: :cry: :cry:

[edit] j'ai encore trouvé d'autres trucs qui ne fonctionnent pas bien sur la requête de recherche dans la base mais c'est purement du mauvais code php qu'il va falloir débugger !
Je suis absolument certain d'avoir testé ces fonctions après le transfert du site, puisque j'ai dû les reprogrammer en partie. Là je pense de plus en plus que c'est l'hébergeur qui vient de modifier quelque chose dans le support de php.

[edit 20/12/2018] La recherche dans la base de données fonctionne à nouveau. Une histoire de minuscules et majuscules qui ne posait pas de problèmes avant et qui aujourd'hui ne passait plus...