32 votes

Comment puis-je éviter de mettre de la magie de l'encodage des commentaires sur le dessus de chaque fichier UTF-8 dans Ruby 1.9?

J'ai un Rails de projet avec beaucoup de chaînes de caractères Cyrillique en elle.

Il a bien fonctionné sur Ruby 1.8, mais Ruby 1.9 suppose fichiers source sont en US-ASCII codé, à moins de fournir un # encoding: utf-8 les commentaires au début du fichier source. À ce stade, les fichiers ne sont pas considérées US-ASCII.

Est-il un moyen plus simple de dire Ruby "Cette application est en UTF8 codé. Veuillez considérer tous et tout inclus fichiers source UTF8 sauf déclaration contraire"?


Mise à JOUR:

J'ai écrit "Comment insérer l'encodage: UTF-8 de la directive automatiquement en Ruby 1.9 fichiers" qui ajoute de l'encodage de la directive automatiquement en cas de besoin.

13voto

Mladen Jablanović Points 22082

Je pense que vous pouvez

  1. utiliser -E utf-8 argument de ligne de commande pour ruby, ou
  2. définissez votre RUBYOPT variable d'environnement "-E utf-8"

12voto

Totor Points 156

À mon avis, explicite n'est pas toujours mieux qu'implicites.

Lors de presque toutes les sources que vous utilisez est compatible UTF-8, vous pouvez facilement éviter de mettre de la magie de l'encodage commentaire en utilisant Ruby -Ku options de ligne de commande.

Ne pas confondre le "u" paramètre de l' -K des options avec -U options.

-Ku : set internal and script encoding to utf-8
-U  : set internal encoding to utf-8

Ensuite, laissez la magie de codage commentaire uniquement dans les scripts qui en ont besoin. Rappelez-vous, convention over configuration!

Vous pouvez définir la variable d'environnement RUBYOPT=-Ku

Voir Ruby options de ligne de commande à http://www.manpagez.com/man/1/ruby/.

4voto

Josh Lee Points 53741

Explicite est mieux qu'implicites. L'écriture du nom de l'encodage est bon pour votre éditeur de texte, votre interprète, et toute autre personne qui veut regarder le fichier. Différentes plates-formes ont des valeurs par défaut différentes -- UTF-8, Windows 1252, Windows-1251, etc. -- et vous serez soit entraver la portabilité ou la plate-forme d'intégration si vous chercher automatiquement l'un sur l'autre. Explicitation des encodages est une Bonne Chose.

Il pourrait être une bonne idée d'intégrer votre application Rails avec GetText. L'ensemble de vos chaînes UTF-8 sera isolé à un petit nombre de fichiers de traduction, et votre Ruby modules sera propre ASCII.

4voto

Il y a un bijou qui définit la magie commentaire sur le dessus sur tous les fichiers dont il a besoin dans un des Rails de projet : https://github.com/m-ryan/magic_encoding

Vous avez juste à l'installer et l'exécuter magic_encoding à la racine de votre projet, le problème est résolu.

3voto

Michael Kohl Points 33345

Pas une réponse directe, mais en fonction de votre environnement de codage, vous pouvez permettre à l'éditeur de prendre soin des choses. Emacs' ruby-mode , par exemple, la variable ruby-insert-encoding-magic-comment:

ruby-insert-encodage de la magie commentaires une variable définie dans `ruby-mode.el' Sa valeur est t

Documentation: *Insérer une magie emacs 'codage' commentaire sur enregistrer si c'est non-nulle.

Vous pouvez personnaliser cette variable.

Je suis sûr qu'il ya quelque chose de similaire pour d'autres éditeurs. Bien sûr, cela signifie encore l'ajout de la magie commentaire pour chaque fichier, mais au moins l'éditeur le fait pour vous automatiquement, au lieu de vous avoir à mémoriser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X