Hola y gracias por leer mi publicación.Compilación (javac) de un código fuente Java codificado en UTF8 con una lista de materiales
Mi problema es el siguiente: quiero compilar un archivo fuente Java con "javac" con este archivo codificado en UTF-8 con una lista de materiales (el SO es WinXP).
continuación es lo que hago:
1) Crear un archivo con "Bloc de notas" y seleccione la codificación UTF-8
dos> notepad Test.java
"File -> Save as..."
File name : Test.java
Save as type: All Files
Encoding : UTF-8
Save
2) Crear una clase Java en ese archivo y se guarda el archivo como en 1)
public class Test
{
public static void main(String [] args)
{
System.out.println("This is a test.");
}
}
3) Visualizar la versión hexadecimal del archivo (primera línea)
dos> xxd Test.java | head -1
0000000: efbb bf70 7562 6c69 6320 636c 6173 7320 ...public class
Nota: ef bb bf es la codificación UTF-8 BOM (la lista de materiales UTF-16 codificada ser FE FF).
4) Intente compilar este código con "javac"
dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class Test
^
1 error
Nota: es la versión decimal de la lista de materiales.
Mi pregunta es la siguiente: ¿cómo puedo hacer este trabajo compilar con:
- manteniéndola codificación UTF-8
- y mantener la lista de materiales?
Gracias por ayudar y saludos cordiales.
Léa
Así es: debe eliminar la lista de materiales. No tiene ningún problema en UTF-8, por lo que es un error. Este es un error de Microsoft de larga data. ¡Nunca pongas un BOM en UTF-8! – tchrist
Hola. Gracias por su respuesta. Utilicé "Notepad ++" para codificar el archivo como "UTF8 sin BOM". La compilación del código con "javac" ahora funciona. –
@tchrist [El estándar Unicode (página 30)] (http://www.unicode.org/versions/Unicode6.0.0/ch02.pdf) permite una lista de materiales en UTF-8, por lo que tiene todo el derecho a ponerla allí si así lo deseas. Por qué querrías es otra historia, pero 'javac' debería manejarla. – ArtB