Conversion / Reconnaissance caractère PHP

Fermé
Jaime - 27 août 2010 à 14:59
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 - 27 août 2010 à 16:03
Bonjour,

je suis actuellement en train de développer un programme en PHP permettant d'exporter des informations provenant d'une base MySQL, au format CSV.
Seulement, il y a quelques caractères que je n'arrive pas à traiter.

Pour une raison que j'ignore, certains caractères spéciaux tels que le "É" ou "ç" sont affichés en respectivement "à0/00" ou "à§".

Etant donné que je reçois les données directement sous cette forme et que je n'ai pas les possibilités pour influer sur la source, mon idée fut de remplacer ces anomalies par leur caractère respectif via un "str_replace" (en définissant donc les correspondances une à une).

Seulement problème, le "str_replace" ne me les reconnait pas. Impossible donc via le code de faire mes replace du "à0/00" en "É" ou du "à§" en "ç".

Pour l'ensemble des autres chaines, pas de soucis en revanche. Si je fais un remplacer manuel via PSPad, aucun problème non plus.

Quelqu'un aurait-il une idée au sujet de ce problème ?

Merci d'avance pour votre aide.



A voir également:

6 réponses

varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
27 août 2010 à 15:12
Bonjour,

j'ai peut être une solution, mais cela ne devrait marcher qu'avec des caractères spéciaux...donc s'il considère $ ou / comme un caractère spécial, cela devrait marcher:

exemple de solution:
$exemple = "as\cfrh";
$exemple = str_replace("\","",$exemple );

devrait normallement donner
$exemple = "ascfrh";mais il n'en est rien. En effet, tu doit declarer ton caractere spécial:
$exemple = str_replace("\\","",$exemple );
donnera le resultat attendu precedemment/

En gros mettre un '\' devant le caractère spécial pour qu'il soit pris en compte.
Dans ton cas peut etre que :

$exemple = str_replace("à\§","ç",$exemple );
marchera
0
Merci pour ton aide =)

Malheureusement le "\" devant le caractère spécial ne change rien.
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
27 août 2010 à 15:23
quand tu fais un echo de ta variable avant et apres, cela te donne quoi?
0
Entre les 2, la variable ne subit aucun changement.

On dirait vraiment qu'il n'y a pas de détection par le replace, étrange...
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
27 août 2010 à 15:31
montre moi les lignes:

d'atribution de ta variable (ou tu y stoke un element)
le premier echo
le replace
et le second echo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Voici :

$fp = fopen("feedProducts.txt", "r");
$current_line = fgets($fp);

while (!feof($fp)) {

$current_line = fgets($fp);

echo $current_line; //RESULTAT : "conà§u"

$current_line= str_replace("à§","ç",$current_line);

echo $current_line; //RESULTAT : "conà§u"

fwrite($fp,$current_line);

}

Si en revanche avec le même code, je fais un replace sur un autre mot, pas de problème.
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 704
Modifié par varfendell le 27/08/2010 à 16:03
essaye en faisant
$current_line= str_replace("à\§","ç",$current_line);
ou
$current_line= str_replace("\à§","ç",$current_line);
ou
$current_line= str_replace("\à\§","ç",$current_line);
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 27/08/2010 à 16:02
C'est pas plutôt É => Ã0/00 et ç => ç ?
Si c'est le cas essaye de passer ta chaine de caractère par un petit utf8-decode https://www.php.net/manual/fr/function.utf8-decode.php.
0