Ich habe mit verschiedenen Teilen von Java-Code experimentiert, um etwas zu finden, das eine Zeichenfolge mit Anführungszeichen, Leerzeichen und "exotischen" Unicode-Zeichen codiert und eine Ausgabe erzeugt, die mit der Funktion encodeURIComponent von JavaScript identisch ist.
Mein Folterteststring lautet: "A" B ± "
Wenn ich in Firebug die folgende JavaScript-Anweisung eingebe:
encodeURIComponent('"A" B ± "');
- Dann bekomme ich:
"%22A%22%20B%20%C2%B1%20%22"
Hier ist mein kleines Test-Java-Programm:
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"));
}
}
- Dieses Programm gibt Folgendes aus:
URLEncoder.encode gibt% 22A% 22 + B +% C2% B1 +% 22 zurück getBytes gibt "A" B ± "zurück.
Nah dran, aber keine Zigarre! Was ist der beste Weg, um eine UTF-8-Zeichenfolge mit Java so zu codieren, dass sie dieselbe Ausgabe wie JavaScript erzeugt encodeURIComponent
?
BEARBEITEN: Ich verwende Java 1.4 und wechsle in Kürze zu Java 5.