8791 sujets

Développement web côté serveur, CMS

J'essaie d'utiliser cette fonction include() très pratique.
Cependant je butte sur un sérieux problème :

Un caractère est ajouté à l'endroit de la fonction, AVANT le contenu à ajouter.

La question est simple : POURQUOI ? Que fais-je de faux ?

J'ai suivi tous les tutoriaux imaginables, il suffit toujours de coder
<?php include('fichier.txt') ?> pour inclure fichier.txt.
mais par exemple, entre les balises <title></title>, ça te plante
un caractère supplémentaire ! Si tu commences la page avec un image,
elle serae décalée d'une ligne vers le bas...

A chaque fois, j'utilise cette fonction entre <head></head> ou
<body></body>

Exemple : dans titre.htm : <title>Le titre de la page</title>

Après l'affichage de la page, quand je consulte le code source résultant,
j'ai []<title>.....</title>, les crochets avec la balise <title> représentant
ce caractère bizarre.

J'ai fais l'experience sur plusieurs serveurs différents et toujours ce caractère.

Merci de votre aide précieuse... Smiley ohwell
Salut,

as-tu vérifié que l'encodage de tes fichiers est bien le même partout, et si tu travailles en utf-8, que tu enregistres tes fichiers sans BOM ?
Oui, tous les fichiers sont codés à l'identique, en UTF-8
et les fichiers sont enregistrés sans BOM. Du moins depuis
Dreamweaver, je sélectionne *sans* pour le paramètre des
BOM.
Mais Dreamweaver ou pas, ça fait la même chose si j'édite
le code directement avec un simple éditeur de texte.

avec <title></title>, ça ne marche pas, mais en plantant
un fichier texte pur sucre dans une cellule <td></td>, là,
pas de problème.

Smiley confus
Deux solutions si ce n'est pas le BOM UTF8 : soit ces caractères sont présent dans le fichier inclus, soit dans le fichier incluant. C'est une erreur courante que de mettre par exemple un saut de ligne en début ou en fin de fichier.
Il y a du nouveau. Mais je ne suis pas satisfait à 100% des explications. Bon...

- C'est en effet une histoire de charset.
- Si j'inclus un fichier texte enregistré avec le Bloc-Note de Windows XP
en format ANSI (par défaut), ça n'ajoute PAS ce caractère... Par contre
les accents ne sont pas bien représentés (c'est donc normal puisque pas
UTF-8). Je dois donc les coder, p.ex. é = &eacute;

Est-ce possible que les serveurs (Apache) ne soient pas configurés sur la
même logique ? Et que les fichiers inclus soient transmis avec un autre charset
configuré au niveau du serveur ? Dans ce cas il faudra que je contact mon
hébergeur.

Avec ou sans BOM, je n'ai pas vu de différence...

Merci pour vos réponses !
Patrick
Re.

Franchement, je ne vois pas ce que ça peut être d'autre qu'une BOM qui traîne ...

Tu devrais essayer de copier ton code dans un fichier vierge, puis écraser ton fichier précédent en faisant bien attention à encoder correctement tout ça.