[PHP] Print_r affiche des "?"

Print_r affiche des "?" [PHP] - PHP - Programmation

Marsh Posté le 14-02-2008 à 18:18:58    

Bonjour,
Lorsque je fais un print_r sur un array contenant des données que j'ai extraites d'un fichier via explode je retrouve aléatoirement des séries de "????" devant la première valeur d'une ligne, par exemple :
 
    [0] => Array
        (
            [0] => ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������toto
            [1] => toto
            [2] => toto
            [3] => toto
        )
 
    [1] => Array
        (
            [0] => ���������������������������������������������������������������������toto
            [1] => toto
            [2] => toto
            [3] => toto
        )
 
 
 
Voilà, donc le truc c'est que ces points s'affichent uniquement via le print_r, en faisant un echo tab[0][0] j'aurai mon "toto" tout propre.
Ensuite j'ai bien pensé à un problème de fin de ligne/retour chariot lors de l'extraction du fichier mais pour l'instant j'ai rien trouvé. Pareil pour l'encodage, utf-8 partout...
 
Halp!

Reply

Marsh Posté le 14-02-2008 à 18:18:58   

Reply

Marsh Posté le 14-02-2008 à 21:23:57    

les ? a priori c'est des caractères pas affichables avec le charset de la page (tu le sais ptet, mais maintenant on est sûr [:dawao]).
Tu dis qu'en faisant un echo tout con ça marche, mais au niveau de la source ça donne quoi ? des espaces ou rien du tout ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 15-02-2008 à 00:26:42    

J'avais pas vu la cat' que je pensais à du C et un tableau pas fermé :o


---------------
Twitter
Reply

Marsh Posté le 15-02-2008 à 12:18:17    

Bon ça me pose vraiment problème ce bouzin, en faisant un multisort il me tri toutes les lignes avec les points d'interrogation ensemble, mais j'peux même pas les virer après coup avec un preg_replace parce que ce ne sont pas de "vrais" points d'interrogation(j'en ai rajouté quelques uns manuellement et ceux-là sont bien virés).
Bref faut que je trouve le problème à la source, des idées de recherche sur l'encodage du fichier? du script? L'environnement?
 
Halp bis
 
 
Edit : Sur la source il n'y'a rien, aucun caractère spécial, c'est vraiment que le retour chariot ou fin de ligne qui peuvent être mal interprétés, et encore pas systématiquement c'est louche....


Message édité par nekikool le 15-02-2008 à 12:19:45
Reply

Marsh Posté le 15-02-2008 à 12:28:38    

pour le preg_replace tu peux faire genre preg_replace('#[^A-Za-z0-9]#', '', $chaine), après ça dépend de ta chaine...
 
Mais bon ya un truc à la base


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 15-02-2008 à 13:35:56    

Ah ouais c'est pas faux. ^^
J'ai que des caractères classiques alphanumériques donc ça roule.
 
Mais bon ça reste une rustine pour rattrapper un problème que je ne sais pas expliquer...

Reply

Marsh Posté le 15-02-2008 à 14:35:13    

Note : Finalement sur la source y'a bien quelque chose, dans un editeur de texte quand on positionne le curseur juste là où doivent se trouver les "?" on se retrouve bloqué, en fait le curseur avance virtuellement dans les "?" invisibles.
Donc ils sont bien là, et ça provient bien du fichier de log, reste à savoir comment et où c'est généré même si là c'est un problème sûrement plus généraliste que PHP.
 
Edit : bien visible sous vi sur le serveur ça donne une sorte de "^@", j'pencherai pour un problème d'encodage à la création du log, si ça doit aider quelqu'un quand on a ce genre de problème, tout de suite vérifier sous VI le log, ça évite de tourner autour du pot. Pour la solution je sais pas encore exactement mais c'ets l'encodage utf-8 qui n'est pas reconnu à la création du log.


Message édité par nekikool le 15-02-2008 à 16:49:22
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed