2010-11-11 41 views
2

J'ai découvert que tous les fichiers que RoR génère lors de la création d'une nouvelle application semblent être sauvegardés avec le codage Western (ISO-8859-1) (je développe localement sur une machine Windows). Par conséquent, j'ai des problèmes lors de l'utilisation de certains caractères spéciaux, par exemple £.Ruby on Rails - Encodage des fichiers générés

  • RoR doit-il générer les fichiers de structure et les enregistrer avec le codage Western (ISO-8859-1)?
  • Sinon, comment puis-je obtenir RoR pour générer les fichiers et les enregistrer avec l'encodage UTF-8, et ainsi éviter les problèmes avec certains caractères, par exemple £?

Veuillez voir Ruby on Rails - £ sign troubles pour une question précédente non résolue que j'ai posée concernant ce problème.

Répondre

1

Rails utilise uniquement des caractères ASCII dans les fichiers générés.

Les fichiers ASCII sont ni UTF-8 ni ISO-8859-1. ASCII est compatible avec les deux codages, mais un fichier ASCII ne devient pas un fichier ISO-8859-1 ou UTF-8 jusqu'à ce que vous y ajoutiez un caractère spécial.

Lorsque vous enregistrer un fichier après avoir ajouté un caractère £, vous devez vous assurer de configurer votre éditeur ou IDE pour utiliser UTF-8 au lieu de ISO-8859-1. Vous devriez rechercher une option de configuration dans votre éditeur. Rails ne peut rien y faire. Si vous exécutez Ruby 1.9, n'oubliez pas de définir un commentaire magique en haut d'un fichier contenant des caractères spéciaux (sauf dans les modèles). Dans Ruby 1.8 et les versions précédentes, ce commentaire n'a aucun effet.

# encoding: utf-8 

Le même problème provoque les symptômes que vous décrivez dans votre autre question.

Pour un peu d'arrière-plan, voir ceci (ancien mais excellent) article about character encodings and Unicode.

+0

Mais pourquoi les fichiers de structure RoR sont-ils générés et enregistrés avec l'encodage ISO-8859-1? Je pensais que l'encodage par défaut dans RoR était UTF-8. – freshest

+0

@freshest, RoR ** ne sauvegarde pas les fichiers comme ISO-8859-1, il les enregistre en ASCII. ASCII est compatible avec UTF-8 et ISO-8859-1. Si vous ajoutez un caractère spécial à un fichier ASCII, ** that ** est le moment où vous devez spécifier le codage correct. Rails n'ajoute pas de caractères spéciaux aux fichiers qu'il génère. Par conséquent, c'est votre configuration d'éditeur qui pose problème, pas Rails. – molf

+0

Et aussi, l'encodage avec lequel les fichiers sont sauvegardés est séparé du codage avec lequel le HTML généré est envoyé. Assurez-vous que c'est correct aussi – Gareth