[RESOLU] UTF8, encode, decode, caractère spéciaux, accents...

Avatar du membre
Eléphant du PHP | 224 Messages

15 févr. 2019, 06:10

Hello,

Bon, je patauge sur un problème à la noix :(

Une table, classement par défaut : ut8-general_ci . Je ne peux absolument pas changer son type de classement (table alimentée par un logiciel de programmation musicale).

Je dois lister depuis cette table, donc je fias mon select, while etc etc , mais j'ai un problème avec les caractères accentués et les caractères spéciaux.

Par exemple , j'ai une musique nommée Généramax et l'autre Alvajárók - Törd Szét (Radio Edit) .

Alors j'ai essayé des tas de codes uft8_encore , utf8_decode, avec ou sans charset

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Je ne parviens pas à avoir les 2 écrites correctement.

Soit j'ai Généramax bien écrit, mais l'autre donne Alvajárók - Törd Szét (Radio Edit) ou encore Alvaj?r?k - T?rd Sz?t (Radio Edit)
Soit j'ai Alvajárók - Törd Szét (Radio Edit) bien écrit mais l'autre donne G�n�ramax

Je finis par parvenir à quelque chose écrit correctement avec ca :

Code : Tout sélectionner

$artist = mb_convert_case($row['artist'], MB_CASE_TITLE);
Mais, quand je mets la page sur le serveur de prod, j’obtiens
G�n�ramax et Alvaj?r?k - T?rd Sz?t (Radio Edit) (sur Chrome)
Alvaj�r�k - T�rd Sz�t (Radio Edit) (sur Firefox).

Sur Firefox, quand je consulte en local , l'encodage du texte se met en Occidental, les titres sont bien affichés. Quand je consulte la page du serveur de prod, l'encodage se met sur Unicode et les titres sont mal affichés.

Pourtant, la page est la même, je ne comprend pas du tout :(

J'ai essayé des

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
ou encore

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252" />
Rien à faire, ca veut pas , et je ne sais pas du tout où chercher (faut dire aussi que c'est quand même franchement flou à mort ces histories d'encodages entre la DB le fichier php etc etc :( ) .

Je ne comprends pas , DB en utf8, page php en UTF8 , charset en UTF8 , mais non, ca affiche n'importe quoi :(

Si quelqu'un a une astuce, je suis preneur :)

Merkouin !
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen:

Avatar du membre
Mammouth du PHP | 1609 Messages

15 févr. 2019, 09:54

Salut, tu peux essayer déjà juste après la connexion à la base de données de passer cette requête :
SET NAMES UTF8
+ la meta charset utf-8 ça devrait être mieux.
Développeur web depuis + de 20 ans

Avatar du membre
Eléphant du PHP | 224 Messages

15 févr. 2019, 18:39

Hello,

Merci beaucoup, ca me retire une bonne épine de la palme :D
Pour ceux qui ont le même problème , voilà ce que j’ai donc mis en mysqli :

Code : Tout sélectionner

mysqli_query($connexion,"SET NAMES 'utf8'");
Bon ouiK !
Un Couin vaut mieux que Deux tu couineras :D
Retrouvez-moi tous les dimanches soir à 22H pour un mix live au vinyle sur eurodance90.fr :mrgreen: