2012-04-18 61 views
0

請讓我知道JavaScript中的等效於Java的encodeURI()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 2012-04-20 09:19:32

+0

這是對安德魯評論的有趣迴應,我不是第一個發表評論的人。但是現在安德魯已經離開了,我很樂意去除這個評論。 – 2012-04-20 09:20:45

回答

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", "&"); 
    } 

需要更多的工作來確保它支持嵌套和完整的規範。