java - sinonimo - Problema de codificación Ant en Windows: los archivos UTF-8, pero escupen basura en los signos diacríticos
tilde diacritica en monosilabos (5)
¿Está especificando la codificación del archivo al compilador correctamente? De lo contrario, el compilador Java usará por defecto la codificación predeterminada de la plataforma, que en Windows (por ejemplo) no es UTF-8. La codificación se especifica mediante el uso del indicador de codificación para javac.
javac -encoding utf8 ...
Y en ant build.xml:
<javac ... encoding="UTF-8" ... />
De alguna manera no puedo conseguir que mis fuentes UTF-8 jueguen bien con Ant.
Recibo una gran cantidad de "advertencia: carácter no intercambiable para codificar ascii". Me estoy volviendo loco, de verdad. Horas y horas y horas. Por cierto, me di cuenta de que 5 personas ya usaban la etiqueta de locos. :-)
Y sí, he leído this , this y otros. Google también (los primeros resultados de 5 páginas de al menos 3 o 4 búsquedas diferentes, al menos). Hay opciones de javac. He intentado. También hay algún preset o algo (lo siento, 3 AM). Tampoco funcionó.
Estoy generando archivos apk de Android con Ant. No puedo usar Eclipse, entonces no. Y, por cierto, la documentación de la hormiga es una tontería para mí. Esos ejemplos no sirven para nada. He perdido la cuenta de cuánto he intentado.
He intentado usar la opción Dfile.encoding, intente mezclar eso con el comando de Windows CHCP 65001. Hizo todas las combinaciones, e incluso hace que Ant (Javac supongo) deje de escupir errores, pero aún así no importa. Mi código aún termina con carros de basura (un montón de ?? en lugar de á, í, etc.).
A continuación se muestra el uso de -Dfile.encoding = UTF-8 en el archivo ant build.xml:
<java classname="${main-class}" fork="true">
<jvmarg value="-Dfile.encoding=UTF-8"/>
Esto solucionará el problema. Trabajando para todos los caracteres UTF 8.
A todos ustedes que usan archivos fuente UTF-8 en Windows y estaban tratando de construir paquetes de Android con Proguard usando la famosa publicación de blog de Dan Galpin / Tim Bray .
Este problema de codificación ocurre con javac ( gracias por la sugerencia, JesperE ). Sin embargo, no pude crear una nueva regla javac en los archivos de mi proyecto, debido a los parámetros necesarios de los que no sabía nada. Así que aquí está la respuesta fácil (probablemente no la única respuesta):
- Pruebe el comando habitual de "liberación de hormigas".
Observe que, al principio, hay una salida que habla de algunas reglas ANT importadas. Justo en el inicio verá algunas reglas [de configuración]. Busque este:
[configuración] Importar archivo de reglas: herramientas / ant / ant_rules_r3.xml
Encuentra ese archivo y ábrelo. Búsqueda de "codificación javac". Verás que está configurado en "ascii". Cambiar a "UTF-8".
- Haz el "lanzamiento de la hormiga" otra vez y estará bien.
Así es como lo hice aquí. Estoy seguro de que hay una manera de anular esto en base a cada proyecto. Pero seguía dándome errores en los parámetros obligatorios, como dije. Así que para mí, al menos, fue mucho más fácil hacerlo de esta manera . Además, solo trabajo con UTF-8 de todos modos.
Debes configurar la misma página en muchos lugares:
- en Ant Script
javac encoding="UTF-8" ... /
-
-Dfile.encoding=UTF-8
en parámetros de llamada Ant En el archivo-properties-resource-encoding - otra vez elige la misma página. También puede cambiarlo para todos los archivos en el contenedor mediante el IDE (preferencias para Eclipse). Luego haga todos los archivos para heredarlo del contenedor.
Si algunos archivos se crearon con una codificación incorrecta, vuelva a trabajar su contenido a través de PsPad o tal vez, otro editor de texto (copiar y pegar, cambiar la codificación del archivo, copiar y pegar). Estos archivos se mencionarán en los errores de
unmappable character
.
Después de configurar estos cuatro problemas, NO unmappable character
líneas de unmappable character
que no se unmappable character
.
Simplemente especifique la codificación en su script build.xml
:
<javac encoding="UTF-8" ... />
Pero para la reutilización del código, es mejor extraer el valor en el archivo de configuración específico del proyecto:
<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>
Y luego simplemente agregue java.encoding=UTF-8
a build.properties para anular la codificación por proyecto.