false говорит PercentEscaper, чтобы выходить из пробела с «% 20», а не с «+»
периментировал с различными частями Java-кода, пытаясь придумать что-то, что будет кодировать строку, содержащую кавычки, пробелы и «экзотические» символы Unicode, и производить вывод, идентичный JavaScriptencodeURIComponent функция.
Моя строка теста на пытки:"A" B ± "
Если я введу следующий оператор JavaScript в Firebug:
encodeURIComponent('"A" B ± "');
- Тогда я получаю:
"%22A%22%20B%20%C2%B1%20%22"
Вот моя маленькая тестовая 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"));
}
}
—Эта программа выводит:
URLEncoder.encode returns %22A%22+B+%C2%B1+%22 getBytes returns "A" B ± "
Близко, но не сигара! Каков наилучший способ кодирования строки UTF-8 с использованием Java, чтобы он выдает тот же вывод, что и JavaScriptencodeURIComponent
?
РЕДАКТИРОВАТЬ: Я использую Java 1.4 в скором времени на Java 5.