Affichage de � dans le texte

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 : Affichage de � dans le texte

Re: Affichage de � dans le texte

par AB » 03 mai 2010, 14:41

Effectivement, je viens d'ajouter le rawurldecode() :?
Quant à la question "pourquoi ça marchait sans", je dirai qu'avec php on peut s'attendre à tout :roll:
ça ne vient pas de php :wink:
Quand tu envoies un header c'est le navigateur qui l'interprète. Or il reconnaissent normalement le format généré par rawurlencode et le décode (dans certaines circonstances). Mais pour être plus rigoureux mieux vaut employer rawurldecode :)

Re: Affichage de � dans le texte

par Taopaipai » 03 mai 2010, 09:31

Effectivement, je viens d'ajouter le rawurldecode() :?
Quant à la question "pourquoi ça marchait sans", je dirai qu'avec php on peut s'attendre à tout :roll:

Re: Affichage de � dans le texte

par AB » 30 avr. 2010, 18:01

Ah ok, si vous êtes certain de ne pas avoir à porter le site sur Web :)

ça m'étonne juste que tu n'aies pas utilisé rawurldecode pour décoder le $_GET['nom_pdf'] dans le script 2, mais bon si ça fonctionne...

Re: Affichage de � dans le texte

par Taopaipai » 30 avr. 2010, 09:31

C'est pour l'intranet d'une entreprise, tout le monde est sous windows et dans le même LAN, ça ne devrait pas poser de problèmes :wink:

Re: Affichage de � dans le texte

par AB » 29 avr. 2010, 16:46

Je peux donc afficher un lien qui apparait comme le nom du fichier, avec ses accents (et virgules, apostrophes...), et qui permet d'ouvrir un pdf.
Tout est bon! dans le cochon
Tant que tu reste sur windows ça peut marcher mais fait un essai sur un serveur distant pour voir avant de crier victoire... :wink:

Re: Affichage de � dans le texte

par Taopaipai » 29 avr. 2010, 16:11

Finalement j'ai trouvé une solution à mon problème.

Le script 1 renvoie via l'url le nom des fichiers du dossier fouillé au script 2, qui lui contient des infos sur la lecture du pdf :

Code : Tout sélectionner

Script 2 : $cs=$_GET['date_cs']; $pdf=$_GET['nom_pdf']; //On veut afficher un pdf header('Content-type: application/pdf'); //Lui donner un nom header('Content-Disposition: attachment; filename='.$pdf); //Emplacement du fichier source readfile('C:\Program Files\wamp\www\ModuleSytralis\module_rapportsCS\rapports_cs\\'.$cs.'\\'.$pdf);
Du coup, dans le script 1, pour faire passer un nom de fichier qui contient des accents, je fais ceci :

Code : Tout sélectionner

Script 1 : while($file=(readdir($dir))) { if (($file != "." ) && ($file != ".." )) { //affichage sans l'extension $vrainom = $file; $file = basename($file, ".pdf"); //juste une petite image de pdf pour le style :p echo "<img src='/sytralis/images/menu/picto/picto_pdf.gif' border='0' width='16' height='16' /> "; $charset='UTF-8'; //$file2 est la version du nom de pdf qui sera affichée en tant que lien $file2 = htmlentities($file); $file2 = str_replace ( '_', ' ', $file2); //$vrainom est le nom du pdf passé au script 2 afin d'ouvrir le pdf $vrainom = rawurlencode ( $vrainom ) ; echo "<a href='//atlas/ModuleSytralis/module_rapportsCS/lire_pdf.php?date_cs=$nom&nom_pdf=$vrainom'> $file2 </a>"; echo "<br/><br/>"; } }
La fonction rawurlencode() fait tout pour moi, un vrai p'tit bonheur ^^
Je peux donc afficher un lien qui apparait comme le nom du fichier, avec ses accents (et virgules, apostrophes...), et qui permet d'ouvrir un pdf.

Tout est bon! dans le cochon

Re: Affichage de � dans le texte

par AB » 27 avr. 2010, 18:33

Ok, je me disais aussi....

Merci pour ton aide!
Merci pour le petit mot, et puisque que tu es inscrit tu peux en profiter pour cocher une case à cocher verte pour mettre résolu :wink:

Re: Affichage de � dans le texte

par Taopaipai » 27 avr. 2010, 11:11

Ok, je me disais aussi....

Merci pour ton aide!

Re: Affichage de � dans le texte

par AB » 26 avr. 2010, 17:21

Ha ben oui si tes titres sont des noms de fichiers c'est une très mauvaise idée (qui ne fonctionnera pas et c'est indépendant de l'encodage). Pas d'accents ni de caractères spéciaux dans les nom de fichiers ou de dossiers !

Pour ces raisons on utilise les techniques de remplacement suivantes

Re: Affichage de � dans le texte

par Taopaipai » 26 avr. 2010, 16:32

Bon, j'ai (je crois) tout modifié en UTF-8 (sans BOM) et toujours les mêmes bugs. #-o
D'ailleurs Joomla avait quasiment tout mis en UTF-8 par défaut.

Les textes qui buggent sont issus des noms de mes pdf, lus par mon script php puis affichés, qui contiennent des accents.

J'ai lu ça :
C'est une très mauvaise idée de vouloir mettre des caractères accentués (ou exotiques) dans les noms de fichiers. Le fait de mettre des espaces pose déjà des problèmes, des caractères comme «/», «\» ou «:» sont prohibés sur certains systèmes de fichiers, alors vouloir mettre des accents, ce n'est que chercher des ennuis supplémentaires (notamment quand on veut transférer des fichiers sur un autre ordinateur ou sur une disquette). Bref, à éviter absolument.
Peut être que finalement le problème vient juste du fait que je ne peux pas vraiment mettre des accents dans mes titres??? :shock:

Re: Affichage de � dans le texte

par AB » 26 avr. 2010, 13:23

Tes données / requêtes / entêtes / enregistrements de fichiers ne sont pas cohérents du début à la fin concernant l'encodage.
Il est maintenant recommandé de coder en utf-8, cela te fait une bonne occasion de t'y mettre :wink:

Comme indiqué dans le tuto mentionné plus haut, TOUS tes outils doivent être configurés pour enregistrer les fichiers en utf-8, y compris des fichiers inclus etc.

Par ailleurs comme apache envoie pour l'instant par défaut des entêtes en iso, il faut mettre en haut de tes pages :
header('Content-Type: text/html; charset=UTF-8'); et pour les requêtes c'est idem il faut spécifier l'encodage juste après ta connexion à la bdd : mysql_query("SET NAMES 'utf8'");

Re: Affichage de � dans le texte

par Invité » 26 avr. 2010, 12:00

J'utilise Joomla pour créer mon site, ça veut dire qu'il faut que je rêgle le problème pour TOUS les fichiers? oO
Je les ouvre avec dreamweaver, et je change l'encodage, et c'est tout bon? Y'en a pour un moment mais si il n'y a que ça je vais essayer.

Concernant la bdd, tout était en latin jesaispasquopi, j'ai tout mis en utf8_general_ci (et ça n'a rien changé, toujours le bug).

Merci pour votre aide en tout cas

Re: Affichage de � dans le texte

par Yosh » 26 avr. 2010, 11:26

Il faut que tu convertisse TOUS tes fichiers ainsi que ta base de donnée dans le même format, et de préférence en UTF8.

Comme ça plus de problème.

Re: Affichage de � dans le texte

par Invité » 26 avr. 2010, 11:19

Merci du conseil, j'ai fait un tour!

J'ai inclus des balises meta utf8 dans mon code, j'ai même essayé d'autres trucs, mais ça ne marche toujours pas.

Pire : sous IE, l'affichage était bon mais les accents sont désormais remplacés par des carrés blancs.

Une petite remarque, avec IE ou Firefox, l'encodage de base est UTF-8. Si je le passe en Windows 1252 ou ISO 8859-1, les accents s'affichent bien.... toujours un problème d'encodage donc.

Je fais signe si je trouve la solution.

Re: Affichage de � dans le texte

par stealth35 » 26 avr. 2010, 09:59

Hello, problème d'encodage, va faire un petit tour par ici
faq-tutoriels/encodage-utf-t245062.html
:wink: