8
votes

Qu'est-ce qui ferait l'exécution d'Ant 'Javac' dans Eclipse avec UTF-8 au lieu de mon système par défaut CP1252?

La semaine dernière, j'ai essayé de déterminer pourquoi certains flux décodent ma demande nouvellement adoptée me donnent quelques problèmes de codage majeurs. Enfin, j'ai compris que le problème était que les pots / guerre construits avec ANT et déployés sur le serveur étaient compilés avec la tâche Javac à l'aide du codage UTF-8 au lieu de la valeur par défaut du système de CP1252.

Cela semble être provoqué principalement par de nombreuses chaînes / caractères codées dures pour ces caractères spéciaux.

Ceci a été facilement résolu par l'une des étapes suivantes:

  • Modification du codage pour le projet Eclipse Pour être UTF-8 pour correspondre au code octet sur le serveur
  • Réglage du codage coding pour la tâche Javac d'être CP1252 pour construire le fichier War pour correspondre au code d'octet client
  • et assez assez d'exécution de la fourmi à partir de l'invite de commande sans désignant tout codage.

    Alors, pourquoi ant in éclipse passe à UTF-8? Est-ce configurable? Où dois-je le configurer?

    système

    • Windows XP
    • Eclipse 3.5
    • ant 1.7.1
    • Java 1.6.0_11

1 commentaires

Le problème devrait être résolu dans quatre endroits simultanément: Stackoverflow.com/a/34225997/715269


3 Réponses :


6
votes

Ant, exécuté à partir d'Eclipse, à l'aide de toutes les mêmes versions (sauf que j'ai Java 1.6.0_15) traite mes fichiers source Java sous forme Windows-1252 . Mon espace de travail et mes projets utilisent les paramètres par défaut.

utf-8 pour correspondre au code octet sur le serveur

Je ne suis pas sûr de ce que vous entendez par ceci - vous voulez dire le codage des fichiers source, sûrement. Le bytecode est un ensemble structuré d'instructions; Les littéraux de chaîne intégrés aux fichiers de classe sont Toujours UTF- 8 .


J'utiliserais séquences d'échappement Unicode pour rendre mes fichiers plus encodés-agnostiques. Vous pouvez utiliser des outils tels que Native2Ascii ou le < Un href = "http:/java.sun.com/javase/6/docs/api/java/nio/charset/chareseCoder.html#canencode(java.lang.harquence)" rel = "noreferrer"> java.nio .chaset API pour aider à cela.


7 commentaires

Il suffit d'ajouter une commande De par là, je voulais dire que si je changeais le codage du projet en UTF8, il serait aligné avec le code compilé de l'UTF8 qui fonctionnait sur le serveur, car la fourmi in Eclipse est en quelque sorte à l'aide de UTF8 pour Javac


Je préférerais que tout soit mis sur un codage plus convivial de la plate-forme, tel que UTF-8, peut-être que cela sera une tâche pour moi d'accomplir quand je vais mieux augmenter sur le projet


@Vanger Vous devez vous assurer que le codage d'entrée est défini, de sorte que l'outil sache ce qu'il est codé. Les fichiers résultants ne sont pas explicitement utilisés par l'UTF-8 (mais peuvent être traités comme valides CP1252, UTF-8, ISO-8859-15, ISO-8859-1, etc.)


@Codeles - Depuis que les fichiers source ne portent aucun métadonna de codage, vous devrez gérer ces informations dans chaque outil et script que vous utilisez le code source avec. Je préfère utiliser les séquences d'échappement \ uxxxx et minimiser leur utilisation. De toute façon, vous devez être discipliné ou vous vous retrouverez avec des bogues encodés.


@MCDOWELL - Cela a été mon inquiétude, comme pour l'instant, j'ai passé cette question, mais dans mon esprit, cela n'est pas vraiment résolu. Honnêtement, nous devrions utiliser UTF-8 aussi loin que possible de la recherche, mais Hélas, je suis de 1 semaine nouveau dans ce projet.


Honnêtement, j'aimerais juste savoir quoi dans le monde en Eclipse à Eclipse, utilisez les différents encodnig pour Javac lorsque même Eclipse compile CP1252



4
votes

Lorsque vous utilisez ANT sur la ligne de commande, il utilise automatiquement le codage par défaut du système, qui semble être Windows-1252 sur votre système.

Lorsque vous utilisez ANT depuis Eclipse, il lit la propriété de codage locale des fichiers / dossiers source afin de déterminer lequel doit être utilisé. Cette propriété est dans la page de la page de la boîte de dialogue Propriétés , disponible lorsque vous cliquez avec le bouton droit de la souris sur un dossier source.

Lorsque rien n'est spécifié, le codage large par défaut de l'espace de travail est utilisé. Il est configurable à partir de la boîte de dialogue préférences.

J'espère que cela aide.


0 commentaires

2
votes

Quelque chose de similaire se passe sur mon ordinateur. Il s'agit de Windows et la configuration de fichier de fichier texte dans Eclipse est définie à la valeur par défaut ( cp1252 strong>).

fourmi de la ligne de commande ne jette pas un ajustement lors de la compilation de code avec des caractères "étranges" ( Par exemple, Ã strong>, Ã ± strong>, ¼ fort>). Mais la même tâche de fourmi de l'éclipse interne fait. P>

J'ai dû configurer la tâche de fourrée dans Eclipse avec ce paramètre dans l'onglet JRE: P>

-Dfile.encoding=Cp1252


0 commentaires