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:
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;
}
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");
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