Ho sperimentato vari bit di codice Java cercando di trovare qualcosa che codificherà una stringa contenente virgolette, spazi e caratteri Unicode "esotici" e produrrà un output identico alla funzione encodeURIComponent di JavaScript .
La stringa del mio test di tortura è: "A" B ± "
Se inserisco la seguente istruzione JavaScript in Firebug:
encodeURIComponent('"A" B ± "');
—Poi ottengo:
"%22A%22%20B%20%C2%B1%20%22"
Ecco il mio piccolo programma Java di prova:
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class EncodingTest
{
public static void main(String[] args) throws UnsupportedEncodingException
{
String s = "\"A\" B ± \"";
System.out.println("URLEncoder.encode returns "
+ URLEncoder.encode(s, "UTF-8"));
System.out.println("getBytes returns "
+ new String(s.getBytes("UTF-8"), "ISO-8859-1"));
}
}
—Questo programma produce:
URLEncoder.encode restituisce% 22A% 22 + B +% C2% B1 +% 22 getBytes restituisce "A" B ± "
Vicino, ma niente sigaro! Qual è il modo migliore per codificare una stringa UTF-8 utilizzando Java in modo che produca lo stesso output di JavaScript encodeURIComponent
?
EDIT: sto usando Java 1.4 per passare a Java 5 a breve.