2012-04-18 2 views
0

Просьба сообщить мне encodeURI() в эквиваленте JavaScript на Java.эквивалент encodeURI не обязательно URLEncoder.encode, эквивалентный encodeURIComponent()

Хотя я знаю об этом эквиваленте encodeURIComponent().

result = URLEncoder.encode(component, "UTF-8") 
    .replaceAll("\\%28", "(") 
    .replaceAll("\\%29", ")") 
    .replaceAll("\\+", "%20") 
    .replaceAll("\\%27", "'") 
    .replaceAll("\\%21", "!") 
    .replaceAll("\\%7E", "~");" 
+0

@MarkoTopolnik, просто отметьте такие вещи со следующего раза. Не нужно комментировать. В противном случае ваш комментарий будет бессмысленным, если материалы будут удалены модераторами :) – tusar

+0

Это был забавный ответ на комментарий Андрея, я был не первым, кто прокомментировал это. Но я с радостью удалю комментарий, когда Андрей уйдет. –

ответ

0

Вы можете попробовать что-то вроде этого;

public static String encodeURIComponent(String url) { 
     try { 
      return URLEncoder.encode(url, "UTF-8") 
       .replaceAll("\\+", "%20") 
       .replaceAll("\\%21", "!") 
       .replaceAll("\\%27", "'") 
       .replaceAll("\\%28", "(") 
       .replaceAll("\\%29", ")") 
       .replaceAll("\\%7E", "~"); 
      //the slow option: 
      //new ScriptEngineManager().getEngineByName("JavaScript")...etc 
     } catch (UnsupportedEncodingException e) { 
      //never 
     } 
    } 

    public static String encodeURI(String url) { 
      return encodeURIComponent(url) 
       .replaceAll("%3A", ":") 
       .replaceAll("%2F", "/") 
       .replaceAll("%3F", "?") 
       .replaceAll("%3D", "=") 
       .replaceAll("%26", "&"); 
    } 

Для обеспечения поддержки гнездования и полной спецификации потребуется дополнительная работа.

Смежные вопросы