2009-02-12 6 views
4

I a créé un static website dans lequel chaque page a la structure suivante:côté serveur comprend et le codage des caractères

  1. choses courantes comme en-tête, menu, etc.
  2. page choses spécifiques dans le contenu principal div
  3. Footer

Dans ce site, tout le contenu commun est dupliqué dans chaque page. Afin d'améliorer la maintenabilité, j'ai refacturé les pages pour utiliser les inclusions côté serveur (SSI) afin que le contenu commun ne soit pas dupliqué. La structure de chaque page est maintenant

  1. SSI pour des trucs communs comme en-tête, menu, etc.
  2. page choses spécifiques dans le contenu principal div
  3. SSI pour le pied de page

Dans le site refactorisée , pour une raison quelconque, les caractères français ne s'affichent plus correctement dans la zone de contenu spécifique à la page, bien qu'ils s'affichent correctement dans le contenu inclus via les SSI.

L'en-tête inclus spécifie le jeu de caractères:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

Si j'ouvre une des pages de contenu principal dans un navigateur, il me dit que le codage de caractères ISO-8859-1. Je l'ai essayé d'ajouter un fichier .htaccess dans le dossier avec les lignes

AddDefaultCharset UTF-8 
AddCharset UTF-8 .shtml 
AddCharset UTF-8 .html 

Mais toujours ces satanés accents français ne sont pas affichés correctement sur la version du site qui utilise SSIS.

+0

Le lien vers le "site refacturé" ne fonctionne plus, mais je suppose qu'il n'y avait pas de BOM (Byte Order Mark) fourni au début de celui-ci. Il y en a un sur le site d'origine. Ou au moins cURL me montre que familier ''╗┐ ' –

Répondre

0

Votre document HTML utilise encodage UTF-8, essayez ces codes de caractères pour vos lettres accentuées: http://www.tony-franks.co.uk/UTF-8.htm

+0

Mais pourquoi cela se produit-il uniquement lors de l'utilisation de SSI? J'utilise UTF-8 dans la version non-SSI et les lettres accentuées s'affichent bien. –

+0

Avez-vous essayé d'ajouter "AddCharset UTF-8 .shtml" à votre fichier http.conf? Je ne sais pas si cela fonctionnera ou non, mais cela vaut la peine d'essayer (en supposant que vous incluez des fichiers .shtml). –

3

Vous servez vos pages en UTF-8, ce qui est bon, mais au moins une partie de la page est être tiré à partir de fichiers qui ne sont pas réellement sauvegardés en UTF-8. SSI ne fait que lancer les octets bruts, il ne tente pas de recoder les inclusions de sorte que leurs jeux de caractères correspondent au fichier dans lequel ils sont inclus.

Vous devez parcourir tous vos fichiers html et inclure des fichiers dans un éditeur de texte et assurez-vous que chacun d'entre eux est enregistré en UTF-8.

Comme John l'a mentionné, vous pouvez éviter les problèmes d'encodage en utilisant des références de caractères pour tous les caractères non-ASCII, mais c'est une énorme souffrance.

+0

Merci pour la suggestion. Dans Eclipse (l'éditeur que j'utilise), j'ai changé le codage de tous les fichiers en UTF8, mais le résultat est toujours le même. Existe-t-il un moyen de vérifier si Eclipse a réellement modifié l'encodage correctement? –

+0

Essayez de charger les fichiers (même simplement sous forme de texte) dans un navigateur Web, en réglant Affichage-> Encodage des caractères sur 'UTF-8' et en vérifiant si les accents s'affichent correctement. Même Notepad peut le faire, à la rigueur, donc je serais surpris si Eclipse ne pouvait pas! – bobince

+0

Est-ce le texte du fichier 'test/index.html' qui est faux ou est-il inclus? Avez-vous essayé de déposer un fichier '.htaccess' dans le dossier, contenant la ligne 'AddDefaultCharset UTF-8'? Actuellement, il est servi en tant que 'text/html' - ce n'est pas important avec le en place, mais quand même. – bobince