fulviot66 ha scritto:
Semplicemente ho trovato dei sorgenti Java dove in un'istruzione di stampa ci sono dei caratteri accentati, come segue
...
System.out.println("é scritto");
...
ma quando lo esegui da console, ottieni al posto della é con l'accento 2 caratteri una A maiuscola con una tilde sopra e una c minuscola dentro ad un cechietto (forse il simbolo del copyright).
Significa che per avere un output a video corretto devo per forza usare il relativo carattere unicode \u seguito dal numero corrispondente?
Allora iniziamo a distinguere due aspetti.
Aspetto 1)
Il sorgente è un file di TESTO, codificato fisicamente nel file secondo un certo charset. Questo charset deve anche essere noto al compilatore, che dovrà ovviamente leggere il sorgente. Se il sorgente è in UTF-8, il compilatore javac del JDK (o quello interno di un IDE o chi per esso) DEVE essere informato del fatto che il sorgente è in UTF-8.
Se usi un IDE (es. Eclipse) generalmente questo è già di norma ragionevolmente a posto, anche perché un IDE tipicamente ha un buon default tipo UTF-8 o al limite il charset predefinito del S.O. Comunque essendo l'IDE "integrato" con editor e compilatore, è ragionevole pensare che il charset usato per salvare il sorgente è lo STESSO usato per la compilazione.
Se invece scrivi il sorgente con un normale editor (Notepad++, PsPad, SublimeText, ecc..) e poi compili "a mano" con il javac del JDK .... questo aspetto NON è così scontato. Devi sapere quale charset usa l'editor e se non è lo stesso di quello predefinito del S.O., devi specificarlo a javac con l'opzione
-encoding
Comunque, se alla fine di tutto nel "bytecode", nel file
.class, la "é" è codificata nel codepoint Unicode U+00E9 allora è corretto, A POSTO e su questo non ci sono altre questioni.
Aspetto 2)
A runtime la stringa sarà stampata da qualche parte. Dove? Nella console di un IDE? Nella console "reale" di un S.O.? In un componente grafico AWT/Swing?
Quindi subentrano altre questioni: possibili limitazioni dell'ambiente in cui il testo viene stampato ed anche questioni sul "font" di carattere (es. "Arial", "Courier New" ecc..) usato.
Se parliamo di una console "reale" di un S.O. Ms Windows, le limitazioni ci sono, perché lì tipicamente viene usato un set "code page" che è single-byte.
Fin qui è tutto chiaro?