D'une manière ou d'une autre, je ne peux pas faire jouer Nice avec Ant à mes sources UTF-8.
J'obtiens beaucoup d'avertissement: caractère non mappable pour l'encodage ascii. Je deviens fou, vraiment. Heures et heures et heures. Au fait, j'ai remarqué que 5 personnes utilisaient déjà le tag fou. :-)
Et oui, j'ai lu this , this et d'autres. Google aussi (les 5 premières pages de résultats d'au moins 3 ou 4 recherches différentes, au moins). Il existe des options javac. J'ai essayé. Il y a aussi des préréglages ou quelque chose (désolé, 3 heures du matin). Ça n'a pas marché non plus.
Je génère des fichiers apk Android Android avec Ant. Je ne peux pas utiliser Eclipse, donc non. J'ai perdu le compte de tout ce que j'ai essayé.
J'ai essayé d'utiliser l'option Dfile.encoding, j'ai essayé de mélanger cela avec la commande Windows CHCP 65001. J'ai fait toutes les combinaisons, et cela fait même que Ant (Javac je suppose) arrête de cracher des erreurs, mais ça n'a toujours pas d'importance. Mon code se retrouve toujours avec des charognards (un tas de ?? au lieu de á, í etc.).
À tous ceux qui utilisent des fichiers source UTF-8 sur Windows et essayaient de construire Android packages avec Proguard utilisant le célèbre article de blog de Dan Galpin/Tim Bray .
Ce problème d'encodage se produit avec javac ( merci pour l'astuce, JesperE). Cependant, je n'ai pas pu créer une nouvelle règle javac sur les fichiers de mon projet, en raison de paramètres nécessaires dont je ne savais rien. Voici donc la réponse facile (probablement pas la seule réponse):
Notez qu'au début, une sortie parle de certaines règles ANT importées. Dès le début, vous verrez quelques règles [de configuration]. Recherchez celui-ci:
[configuration] Importation du fichier de règles: tools\ant\ant_rules_r3.xml
Recherchez ce fichier et ouvrez-le. Recherchez "encodage javac". Vous verrez qu'il est réglé sur "ascii". Passez à "UTF-8".
C'est comme ça que j'ai fait ici. Je suis sûr qu'il existe un moyen de contourner cela sur une base par projet. Mais cela ne cessait de me donner des erreurs sur les paramètres obligatoires, comme je l'ai dit. Donc pour moi au moins, c'était beaucoup plus facile de faire de cette façon . De plus, je ne travaille qu'avec UTF-8 de toute façon.
Spécifiez-vous correctement l'encodage du fichier dans le compilateur? Le compilateur Java utilisera par défaut l'encodage par défaut de la plateforme, qui sous Windows (par exemple) n'est pas UTF-8. L'encodage est spécifié en utilisant l'indicateur -encoding pour javac.
javac -encoding utf8 ...
Et dans ant build.xml:
<javac ... encoding="UTF-8" ... />
Spécifiez simplement l'encodage dans votre build.xml
script:
<javac encoding="UTF-8" ... />
Mais pour la réutilisation du code, il est préférable d'extraire de la valeur dans un fichier de configuration spécifique au projet:
<property file="build.properties" />
<property name="Java.encoding" value="ascii" />
<javac encoding="${Java.encoding}"
source="${Java.source}" ....>
<src path="${source.dir}" />
<classpath>
<fileset ... />
</classpath>
</javac>
Et puis ajoutez simplement Java.encoding=UTF-8
à build.properties pour remplacer le codage par projet.
Vous devez définir la même page à de nombreux endroits:
javac encoding="UTF-8" ... /
-Dfile.encoding=UTF-8
dans les paramètres de l'appel AntDans file-properties-resource-encoding - choisissez à nouveau la même page. Vous pouvez également le modifier pour tous les fichiers du conteneur par le IDE (préférences pour Eclipse). Ensuite, faites en sorte que tous les fichiers l'héritent du conteneur.
Si certains fichiers ont été créés avec un mauvais encodage, retravaillez leur contenu via PsPad ou peut-être, un autre éditeur de texte (copier-coller, changer l'encodage des fichiers, copier-coller). Ces fichiers seront mentionnés dans unmappable character
les erreurs.
Après avoir réglé ces quatre problèmes, vous n'aurez PAS unmappable character
lignes.
ci-dessous est l'utilisation de -Dfile.encoding = UTF-8 dans le fichier ant build.xml:
<Java classname="${main-class}" fork="true">
<jvmarg value="-Dfile.encoding=UTF-8"/>
Cela résoudra le problème. Fonctionne pour tous les caractères UTF 8.