31 marzo 2009

Recuperare Charset di default della Java Virtual Machine (JVM)

A volte in fase di compilazione si può incorrere in problemi di charset, specialmente se si sviluppa in ambienti eterogenei (Linux, Windows, Unix).
A volte si incorre in classi Java compilate con virtual machine che utilizzano charset diverse, causando problemi nelle stringhe che contengono caratteri speciali.
Il metodo mediante cui è possibile riconoscere il charset utilizzato dalla Virtual Machine per compilare è il seguente.

Questo esempio presenta una sezione compatibile con la versione 1.4 della jdk ed un altra con la 1.5. Per poter eseguire lo script è necessario commentare la sezione non interessata.
public class Hello {
public static void main(String args[]) throws Exception{
// not crossplateform safe
System.out.println(System.getProperty("file.encoding"));
// jdk1.4
System.out.println(
new java.io.OutputStreamWriter(
new java.io.ByteArrayOutputStream()).getEncoding()
);
// jdk1.5
System.out.println(java.nio.charset.Charset.defaultCharset().name());
}
}

L'output sarà del tipo:
>java Hello
Cp1252
Cp1252
windows-1252

Nessun commento: