lunedì 6 febbraio 2012

Java encoding URL

Nella costruzione di URL o di link dinamici tramite concatenazione di Stringhe è facile incappare in errori di encoding dovuti a caratteri particolari, i cosiddetti caratteri "unsafe".
Per ovviare a questo problema la JDK ci viene in soccorso con la comoda classe java.net.URLEncoder.
Un esempio di utilizzo all'interno di un proprio metodo  è incollato sotto.
Il metodo encode di URLEncoder lancia una checked Exception, UnsupportedEncodingException, che è necessario gestire .
Per verificare se la propria JDK supporta UTF-8 come dovrebbe basta eseguire il seguente codice:

java.nio.charset.Charset.forName("UTF-8");

Se la chiamata al metodo va in eccezione allora l'encoding non è supportato dalla JDK.

Esempio metodo:

public static String encode(String s) {
        String retVal="";
        boolean supportUTF8=true;
        try
        {
           
            retVal=URLEncoder.encode(s, "UTF-8");
        }
        catch(UnsupportedEncodingException ex){
            // da specifica
            //The World Wide Web Consortium Recommendation states that UTF-8 should be used.
            // Not doing so may introduce incompatibilites.
            log.error("Attenzione, il runtime Java non supporta la codifica UTF-8 per l'url encoding, tentiamo la replace manuale dei caratteri particolari");
            log.error("Verificare il tipo di JDK usata, UTF-8 dovrebbe sempre essere supportato");
            supportUTF8=false;
        }
        if(!supportUTF8){
            retVal=provaAMano();// implementarsi questo metodo tentando di fare qualcosa manualmente, altrimenti tira su un'eccezione
        }
        return retVal;
    }

Nessun commento:

Posta un commento