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. P>
Cela semble être provoqué principalement par de nombreuses chaînes / caractères codées dures pour ces caractères spéciaux. P>
Ceci a été facilement résolu par l'une des étapes suivantes: p>
Alors, pourquoi ant in éclipse em> passe à UTF-8? Est-ce configurable? Où dois-je le configurer? P>
système fort> p>
3 Réponses :
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 utf-8 pour correspondre au code octet sur le serveur p>
blockQuote>
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 . P>
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. P> Windows-1252 code>. Mon espace de travail et mes projets utilisent les paramètres par défaut. P>
Il suffit d'ajouter une commande
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
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. P>
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 forte> de la page forte> de la boîte de dialogue fort> Propriétés forte>, disponible lorsque vous cliquez avec le bouton droit de la souris sur un dossier source. P>
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 forte> préférences. P>
J'espère que cela aide. P>
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 ( fourmi de la ligne de commande ne jette pas un ajustement lors de la compilation de code avec des caractères "étranges" ( Par exemple, J'ai dû configurer la tâche de fourrée dans Eclipse avec ce paramètre dans l'onglet JRE: P> -Dfile.encoding=Cp1252
Le problème devrait être résolu dans quatre endroits simultanément: Stackoverflow.com/a/34225997/715269