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.

Ответы на вопрос(12)

Ваш ответ на вопрос