Bonjour à tous,

Est-il possible d'avoir une page encoder en ANSI et en UTF-8 ?

Dans le logiciel Notepad++ il est apparement possible de faire des fichier encodés en ANSI et UTF-8 sans BOM.

J'ai testé deux pages une en UTF-8 et une en ANSI et UTF-8, seule la page en ANSI et UTF-8 fonctionne.

J'ai fait une page en UTF-8 avec UltraEdit, je l'ouvre avec notepad++ et surprise il me l'ouvre comme une page encodé en ANSI et UTF-8 sans BOM.

Merci pour vos réponses.
Quel format ANSI ? L'ANSI est l'institut national américain de standardisation. Pour les encodages de caractères, il y a bien le ANSI_X3.4-1968/ANSI_X3.4-1986, que l'on appelle plus couramment ASCII ou US-ASCII.

Je me demande comment on peut encoder une page dans deux encodages à la fois. Logiquement, ça ne devrait point être possible.
Tu aurais un exemple concret ?
Je ne vois pas non plus comment c'est possible... ANSI = iso-8859-1, je vois mal comment encoder à la fois en iso et en utf8.
J'ai bien € é à pour les deux versions moi ... IE6+SP2.
Juste, il y a un warning à propos des header sur la page qui soit-disant ne fonctionne pas.
l'erreur vient je pense de l'utf-8 avec le BOM, cela crée des sigles "" juste avant le header.
J'avais déjà remarqué ici

Sous Firefox l'encodage ne change pas automatiquement à cause de l'erreur php, sous ie en effet cela fonctionne.

Ce qui me laisse pensé qu'en fait le format qu'ils appelent ANSI utf-8 sans BOM est en fait de l'utf-8 sans BOM et que leur format utf-8 est de l'utf-8 avec BOM.
J'ai regardé l'hexa de tout mes fichiers et ca confirme ce que je disais au dessus. j'ai crée un fichier avec notepad++ en ANSI sans cocher utf-8 sans BOM, on a bien de l'iso.

Bref ils sont pas très clairs dans leur menu.
Tu as une erreur PHP car l'en-tête HTTP que tu veux envoyer via PHP est déjà envoyé par le serveur.

Ton fichier est bien en UTF-8, lorsque je dis à Firefox de le lire en UTF-8 tout passe bien. Par contre, il s'affiche par défaut en iso-8859-1, ce qui fait apparaître le BOM. Dès que le navigateur l'analyse en UTF-8, il masque le BOM.

On obtient (le navigateur) de l'iso-8859-1 pour la raison suivante :
– le serveur web envoie l'en-tête HTTP suivant :
Content-Type: text/html; charset=iso-8859-1

– PHP essaie d'envoyer un en-tête similaire mais déclarant de l'utf-8, ce qui n'est pas possible (semble-t-il) car l'en-tête est déjà défini ;
– l'indication d'encodage de la balise META est bien utf-8, mais l'en-tête HTTP est prioritaire.

Il faut donc configurer ton serveur web, soit pour qu'il ne déclare pas lui-même d'encodage par défaut, soit pour qu'il déclare de l'utf-8. Si tu n'as pas directement accès à la configuration, et qu'il s'agit d'un serveur Apache, c'est modifiable localement via un fichier .htaccess, il me semble.
En fait l'erreur php est précisément due au BOM, car ce sont des octets qui sont envoyés avant le premier <?php du fichier (tu ne les vois pas quand tu édites le fichier mais ils sont bien là).
En effet avec le changement d'un paramètre de apache tout fonctionne bien.

AddDefaultCharset off

le serveur n'envoie plus d'entête http, c'est bien la meta qui spécifie l'encodage.

Merci à tous