Caractères accentués issus du système de fichier

Leyry Hynemonth

a découvert une nouvelle définition de l'ennui.
Club iGen
18 Décembre 2004
4 142
260
Nîmes
www.lyhn.fr
Bonjour ! :coucou:

Je rencontre un problème dont je n'arrive pas à comprendre les raisons.

L'environnement dans lequel la question se pose est plus complexe, mais j'ai réussi à simplifier le problème jusqu'à cela :

Si dans une page HTML sans rien de déclaré au niveau du charset, je colle la ligne de texte suivante :

<h1>HéléléGânàÇä HélénéGânàÇä</h1>

ça me donne

HéléléGaÌ&#8218;naÌ&#8364;ÇaÌ&#710; HélénéGânà Ã&#8225;ä

Les deux "HéléléGânàÇä" ne sont pas identiques sur la sortie, alors qu'ils semblaient l'être dans le code.

Il faut savoir que le premier est issu d'un copier/coller depuis mon système de fichier, alors que j'ai écris le second au clavier dans l'éditeur de texte.
(le problème se reproduit à l'identique lorsque mon script php récupère le nom du fichier depuis le système de fichier)

Le fichier HTML est enregistré en UTF-8. Le navigateur est laissé sans encodage pour mettre ne évidence le problème. (Si le navigateur est passé en UTF-8, les deux "Hélé..." sont identiques sur le rendu...... pour les navigateurs récents ! mais je dois être rétro-compatible jusqu'à netscape 4, qui est sensible à ce problème : lorsque tout est déclaré en UTF-8, lui continue de m'écrire "He?le?le?Ga?na?C?a? HélénéGânàÇä" pour le code indiqué plus haut. )

Ce que je cherche, c'est d'une part comprendre ce qu'il se passe entre les deux "HélénéGânàÇä", et d'autre part, trouver une fonction php qui me transforme les caractères issues du système de fichier pour obtenir ceux que j'aurais eu en les tapant au clavier....

Merci pour vos éclairages qui sauveront mes cheveux :zen:

---------- Nouveau message ajouté à 13h09 ---------- Le message précédent a été envoyé à 12h58 ----------

Au pire, si je fait un str_replace qui cherche les caractères accentués copiés/collés de mon système de fichier pour les remplacer par des caractères tapés au clavier, ça marche.

Mais j'aimerais que cela ne soit pas lié à mon système de fichier.
 
Ton éditeur est bien configuré en utf8?

Tu as bien :

Bloc de code:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
ou (html5) :

Bloc de code:
  <meta charset="UTF-8" />
&#8230;Dans le head de ta page?

Ton serveur envoie bien les bons headers http au niveau de l'encodage?

J'ai pas trop compris ce que tu veux dire par «issus du système de fichiers» mais les fichiers sur un serveur web, en général, ne peuvent pas comporter de caractère accentués juste a-z, 1-9, -, _.
 
Dernière édition par un modérateur:
Bien que ta réponse soit un peux à coté du problème, elle soulève un ENORME détail auquel je n'avais pas pensé.

Du coup, tout mon développement tombe à l'eau.
Je vais commencer par me jeter dans ma baignoire, puis on verra ensuite quelle stratégie j'adopte. Une stratégie qui, je l'espère, résoudra le problème que j'ai ici.

Merci gloup gloup, et bonne fin de journée. :coucou:

LyHn.
 
Attention je parle bien des fichiers, on peut avoir des URLs accentuées et avec caractères spéciaux gérées par le cms. Exemples: Wikipédia ou dotclear. Il est même possible d'avoir un nom de domaine accentué:

http://www.alsacréation.fr/

Mais là ça ne s'affiche pas de la même façon dans tous les navigateurs. :)
 
Attention je parle bien des fichiers,

Ouioui, j'avais bien compris.

J'ai d'ailleurs résolu le problème : plus aucun fichier avec un caractère spécial, mais des urlEncode et Decode pour quand même avoir le bon nom dans TOUS les navigateurs.

:zen:


Bonne soirée !