Problème d'encodage?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'encodage?

Re: Problème d'encodage?

par Kaptha » 21 juin 2011, 12:32

Mec, je sais que ce thread est super vieux, mais j'ai été confronté au même soucis, et ça fait deux jours que je cherche.

Merci.

MERCI MERCI MERCI.

J'ai ENFIN réussi à résoudre ce problème d'encodage grâce à toi.

MERCI de faire partie des gens qui disent quand ils ont finalement trouvé la réponse.

par Yosh » 23 janv. 2009, 17:54

Solution trouvé, pour ne pas avoir de problème lors de l'écriture de données au format excel, il suffit d'utiliser le type d'encodage windows-1252

J'ai mis quasi une journée pour trouver la solution, donc j'espère que cela pourra aider qq'un.
$data = new Spreadsheet_Excel_Reader();		

//défini l'encodage de sortie
//important pour conserver les caractère entrelacé et les sigles spéciaux
$data->setOutputEncoding("windows-1252");

par Yosh » 22 janv. 2009, 16:23

Effectivement ^^ mais l'inverse ne fonctionne pas non plus, j'insiste sur le fait que Microsoft encode à ça façon les caractère sus-cité.

Prenez un fichier EXCEL tapez les caractères, enregistrez et essayez de récupérer le contenu du fichier pour voir.

par jojolapine » 22 janv. 2009, 16:19

Euh... atten là, je croyais que ton applciation était en utf-8, alors pourquoi vouloir convertir en ISO?
la conversion n'est utilie que de l'ascii pour aller vers l'utf-8 dans tonc cas ...

par Yosh » 22 janv. 2009, 16:17

En fait le soucis provient principalement de EXCEL qui (apparement) encode ces caractères à ça façon.

Je viens d'essayer ceci qui ne fonctionne pas.
if(mb_detect_encoding($data->sheets[0]['cells'][$i][$j]) == "UTF-8"){
									echo mb_convert_encoding($data->sheets[0]['cells'][$i][$j],"ISO-8859-1", "UTF-8");
								}

par AB » 22 janv. 2009, 16:13

Comme l'a dit jojolapine, il doit y avoir un problème quelque part dans ta chaine de traitement puisque
<?php	header('Content-type: text/html; charset=UTF-8');
$a = 'Œ5€';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<?php echo $a;?> // affiche bien 'Œ5€'
</body>
</html>
Sinon il y a ce tuto pour peut-être te donner des pistes.

par jojolapine » 22 janv. 2009, 16:11

Essaye alors de faire quelque chose avec
http://fr2.php.net/manual/fr/function.m ... coding.php

combiné à mb_detect_encoding()...
Je tatone avec toi hein? je sais pas trop si ça va changer quelque chose...

par Yosh » 22 janv. 2009, 16:08

Alors pour la totalité de ma chaine (qui est une concaténation de plusieurs mots), le résultat est le suivant:

Code : Tout sélectionner

ASCII -------------------------------------------------------------------------------- UTF-8 -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII -------------------------------------------------------------------------------- ASCII

par jojolapine » 22 janv. 2009, 16:03

Bonjour,
Comment est-ce que tu récupères les données du fichier?
As-tu essayé de détecter l'encodage de ce dernier?
(genre http://fr2.php.net/mb_detect_encoding )

Problème d'encodage?

par Yosh » 22 janv. 2009, 15:57

Bonjour à tous,

Voici mon problème, j'ai créé un script PHP qui importe les données d'un fichier XLS et fait des traitemenst sur les chaines de cractères avant de la réenregistrer.

Tous fonctionne niquel, SAUF lorsque le caractère Œ est présent (idem avec le sigle €), cela me génère une ligne incompréhensible (comme si l'encodage de TOUTE la chaine était changé) avec des carré entre chqaue lettre.

Le seul moyen que j'ai trouvé de changé le Œ en OE est la façon suivante mais c'est crade et ne fonctionne pas bien puisqu'il y a des carré entre chaque lettre.
$data->sheets[0]['cells'][$i][$j] = str_replace("R","OE",$data->sheets[0]['cells'][$i][$j]);								
							$data->sheets[0]['cells'][$i][$j] = str_replace("S","oe",$data->sheets[0]['cells'][$i][$j]);			
Donc d'après mes recherches (ça fait une heure que je suis dessus :/ ) UTF8 ne contiendrai pas ces caractères ?!?!

En fait lorsque je lit le fichier excel (à partir d'un reader excel) je n'arrive pas à détecter la chaine Œ, au lieu de cela je lit R qui correspond à je ne sais quoi.

Précision: tout mon environnement de travail est défini en UTF8.