Utilizzo di Java 6 per ottenere caratteri a 8 bit da una stringa:String.getBytes ("ISO-8859-1") mi dà 16 bit caratteri su OS X
System.out.println(Arrays.toString("öä".getBytes("ISO-8859-1")));
mi dà, su Linux: [-10, 28] ma OS XI ottiene: [63, 63, 63, -89]
Mi sembra di ottenere lo stesso risultato quando utilizzo la nuova classe di nio CharSetEncoder. Che cosa sto facendo di sbagliato? O è colpa di Apple? :)
Sembra che MacRoman sia la codifica predefinita sul mio sistema OSX. Il file sorgente con questo valore letterale è codificato in UTF-8 e lo analizza erroneamente come MacRoman. Quindi come risolvere questo? Specificare la codifica UTF-8 non sembra una buona opzione. Cosa succede se ho dei buoni vecchi file ISO-8859-1? – lennartcl
Se alcuni dei tuoi file sono ISO-8859-1, dovrai comunque compilarli separatamente e specificare * che * la codifica. Ti suggerisco di specificare sempre UTF-8, sia per il salvataggio che per la compilazione. Se un file MacRoman o ISO-8859-1 si insinua, lo saprai quando la compilazione fallisce; è molto più difficile ingannare UTF-8 nell'accettare dati falsi piuttosto che nella maggior parte delle altre codifiche. –
Ho pensato che sarebbe passato a ISO-8859-1 se non fosse in grado di leggere un file come UTF-8. Ma questo non sembra essere il caso sulla mia macchina Linux. Quindi '-encoding utf-8' dà lo stesso comportamento. Non mi sento ancora del tutto a mio agio nell'usare questo interruttore, ma mi rendo conto che dovrò aggiustarlo sulla mia scatola OSX e sistemi simili. Non posso fare a meno di chiedermi se non esiste una "correzione" globale, quindi il mio sistema non esploderà la prossima volta che mi imbatterò in un progetto che utilizza letterali stringa UTF-8 e non ho un test unitario per prendere il problema? – lennartcl