Page 1 sur 1

Afficher un fichier txt contenant des caractères accentués.

Posté : 02 août 2005, 10:36
par Invité
Bonjour,

Je débute en php.

Voici mon problème.

Je voudrais "inclure" un fichier txt écrit en français (donc avec caractères accentués) dans un page xhtml.

J'ai lu la doc php et voici mon code :
if (is_file("index.txt"))
{
	print "<div class='content'>" ;
	print "<p>";
	$content = file_get_contents("index.txt",1);
	$content = htmlentities($content,ENT_QUOTES,ISO-8859-1);
	$content=ereg_replace("\n\n","</p><p>",$content);
	$content=ereg_replace("\n","<br/>",$content);
	print $content;
	print "</p>";
	print "</div>";
}
Cela ne fonctionne pas trop mal : les retours simples sont remplacés par <br/>, les doubles par </p><p>.

Mais mes caractères accentués sont horrible : "préférence" devient "prŽfŽrence".

J'ai remplacé "ISO-8859-1" par "ISO-8859-15", mais sans résultats.
Y a-t-il une solution simple sans devoir convertir le fichier txt?

Merci.

Posté : 02 août 2005, 10:37
par mere-teresa
UTF 8 ?

Posté : 02 août 2005, 10:48
par h2o
[désolé, je n'étais pas connecté pour poser la question]

UTF-8 est l'encodage texte que j'ai utilisé en tout premier lieu (je programme pas mal xml-xslt) : mais le résultat n'est pas bon non plus.

Note : j'utilise php 5.

Posté : 02 août 2005, 20:44
par Invité
tu peux aussi jeter un coup d'oeuil au niveau du conf d'apache sur le AddDefaultCharset et regarder l'encodage de ton navigateur.
c'est comme ça que j'avais résolu mon pb(en passant tout en iso).
mais si htmlentities marchait bien sans ton fichier texte ou que tu es hébergé alors je ne sais pas.

Posté : 02 août 2005, 21:11
par h2o
Je suis hébergé : pas trop envie de me casser les c* avec la maintenance du serveur.

Et htmlentities ne semble pas marcher pour convertir un "é" en

Code : Tout sélectionner

&eacute;
Dommage. C'est ces petites choses simple que parfois j'espère...

Posté : 03 août 2005, 00:37
par NoNos
Je n'ai pas la solution pour tes accent mais il serai peut etre possible de remplacer a l'aide d'une fonction qui parcoure ton fichier tous les caractère accentué par des caractère non accentué.

Pourquoi faire simple quand on peut faire compliqué (lol)

Posté : 03 août 2005, 09:28
par h2o
Je n'ai aucun avantage à afficher un texte sans accents : cela ferais mauvais genre sur le site.

Bon, je vais chercher une alternative.

Posté : 03 août 2005, 09:36
par ouckileou
Et htmlentities ne semble pas marcher pour convertir un "é" en

Code : Tout sélectionner

&eacute;
bizarre... c'est pourtant ce qu'on utilise d'habitude :shock:

tu peux peut-être refaire un essai et nous le montrer si ça ne marche pas ;)

Posté : 04 août 2005, 09:36
par h2o
J'ai trouvé le problème et donc la solution. Le code php n'étais pas en cause mais l'encodage du texte importé n'était pas au bon format (encodage Mac OS Roman et non pas Windows latin 1).

Merci à ouckileou qui par sa remarque m'a mis sur la piste.

Posté : 08 sept. 2005, 13:18
par Invité
J'ai presque le même problème je veux que mon formulaire puisse envoyer les caractère accentués de manière correcte voici le script:

Merci de me guider

<?php
## -- --------- START OF CONFIG SECTION --------- ##
## STEP ONE: Change the info below to your details

$SendToEmail = "[email protected]";                  ## Your Email Address
$YourWebsiteURL = "http://www.test.ca/";   ## Your Website URL 
$YourName = "test";                       ## Your Name or Company Name
$yoursubject = "Formulaire de rapport du $date $datee $dateee" ;         ## The Email Subject Line
$ThankyouURL = "merci.htm";                    ##  Send them here after they have filled in the form

## STEP TWO: Change details below for the email footer of the confirmation email.
$EmailFooter = "
Merci,

L'équipe de test
Web: http://www.test.ca/";

## ---------- END OF CONFIG SECTION ------------- ##

## If they call this page direct from the browser, send them away because they havent filled in the form!
if(!isset($email)) {
 header("location: $YourWebsiteURL");     ## Redirect them to your websites front page
 exit();
}

## Send the Email to you ....
 $yoursubject = "$yoursubject";
 $emailtext = "
-----------------------------------------------------------------------------
   ".$yoursubject."
-----------------------------------------------------------------------------

".$prenom." ".$nom." a envoyé son rapport du: ".$date." ".$datee." ".$dateee."

1-Prénom du Rep:  || ".$prenom."
-----------------------------------------------------------------------------
2-Nom du Rep:  || ".$nom."
-----------------------------------------------------------------------------


Merci,

".$YourName." 
".$YourWebsiteURL."
";
	$yoursubject = stripslashes($yoursubject);
    $emailtext = stripslashes($emailtext);
 @mail("$SendToEmail", $yoursubject, $emailtext, "From: $email"); ## Email Sent

## Now lets send a thankyou email to the sender
 $emailsubject = "Re: ".$yoursubject."";
 $autoemail = "
-----------------------------------------------------------------------------
   Re: ".$yoursubject."
-----------------------------------------------------------------------------

Merci ".$prenom." ".$nom."  Pour le rapport du: ".$date." ".$datee." ".$dateee."
Voici une copie de votre rapport de la journée

1-Prénom du Rep:  || ".$prenom."
-----------------------------------------------------------------------------
2-Nom du Rep:  || ".$nom."
-----------------------------------------------------------------------------

".$EmailFooter."
";
	$yoursubject = stripslashes($yoursubject);
    $autoemail = stripslashes($autoemail);
 @mail($email, $emailsubject, $autoemail, "From: $SendToEmail  "); ## Email Sent

## The emails have both been sent, so we should now send the user to a confirmation page
 header("Location: $ThankyouURL"); ## Don't change this, change the $ThankyouURL at the top!
 exit;
## That's it !


?>