Ciao e grazie per aver letto il mio post.Compilare (javac) un codice sorgente Java con codifica UTF8 con una BOM
Il mio problema è il seguente: Voglio compilare un file sorgente Java con "javac" con questo file codificato in UTF-8 con una distinta base (il sistema operativo è WinXP).
Qui di seguito è quello che faccio:
1) Creare un file con "Blocco note" e scegliere la codifica UTF-8
dos> notepad Test.java
"File -> Save as..."
File name : Test.java
Save as type: All Files
Encoding : UTF-8
Save
2) Creare una classe Java in quel file e salvato il file come in 1)
public class Test
{
public static void main(String [] args)
{
System.out.println("This is a test.");
}
}
3) Visualizzare la versione esadecimale del file (prima linea)
dos> xxd Test.java | head -1
0000000: efbb bf70 7562 6c69 6320 636c 6173 7320 ...public class
Nota: ef bb bf rappresenta l'UTF-8 codificato BOM (UTF-16 codificato BOM essendo FE FF).
4) Provare a compilare questo codice con "javac"
dos> javac -encoding utf8 Test.java
Test.java:1: illegal character: \65279
?public class Test
^
1 error
Nota: è la versione decimale del BOM.
La mia domanda è la seguente: come posso fare questo lavoro compilazione con:
- mantenendolo codifica UTF-8
- e mantenendo la distinta base?
Grazie per l'aiuto e cordiali saluti.
Léa
Proprio così: devi rimuovere il BOM. Non ha business in UTF-8, quindi ovviamente è un errore. Questo è un bug Microsoft di vecchia data. Mai e poi mai messo una BOM in UTF-8 !!!!! – tchrist
Ciao. La ringrazio per la risposta. Ho usato "Notepad ++" per codificare il file come "UTF8 senza BOM". Ora la compilazione del codice con "javac" funziona. –
@tchrist [The Unicode Standard (pagina 30)] (http://www.unicode.org/versions/Unicode6.0.0/ch02.pdf) consente una distinta base in UTF-8 in modo da avere tutto il diritto di metterlo lì se lo desideri Perché tu vorresti è un'altra storia, ma 'javac' dovrebbe gestirlo. – ArtB