J'ai fait des expériences avec différents morceaux de code Java essayer de venir avec quelque chose qui va coder une chaîne de caractères contenant des citations, des espaces et des "exotiques" des caractères Unicode et produire une sortie identique à du JavaScript encodeURIComponent fonction.
Mon torture chaîne de test est: "Un" B ± "
Si j'entre le code JavaScript suivant déclaration dans Firebug:
encodeURIComponent('"A" B ± "');
—Puis-je obtenir:
"%22A%22%20B%20%C2%B1%20%22"
Voici mon petit test de programme Java:
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"));
}
}
—Sortie de ce programme:
URLEncoder.encoder les retours %22%22+B+%C2%B1+%22 getBytes renvoie "A" B ± "
À proximité, mais pas de cigare! Quelle est la meilleure façon de l'encodage d'une chaîne UTF-8 à l'aide de Java, de sorte qu'elle produit le même résultat que du JavaScript encodeURIComponent
?
EDIT: je suis en utilisant Java 1.4 passer à Java 5 peu de temps.