2017-11-13 3 views
-3
내가에는 urlencoding는 다른 라이브러리처럼 작동하도록하기 위해이 같은 바보의 ** t을 수행하는 데

(아이폰 OS, 자바 스크립트 ...)를 java.net.URLEncoder는 버그가 또는 표준 인코딩에 기록되지 때문에 :다른 사람들과 같이 urlEncoder.encode를 사용할 수없는 이유는 무엇입니까?

URLEncoder.encode(normalizeString(str), StandardCharsets.UTF_8.displayName()) 
        .replace("+", "%20") 
        .replace("%40", "@") 
        .replace("*", "%2A"); 

+*@ 인 동안 백분율은 인코딩되지 않습니다. 이제 ... 슬래시 인코딩 /입니다. wtf! 이것에 대한 좋은 설명이 있습니까? 잘못된 Charset을 사용하고 있습니까?

+3

질문을 편집하고 [mcve]를 제공하는 것이 좋습니다. 그것은'encode()'에 대한 문자 입력 (즉,'normalizeString (str)'이 아닌, 그것이 무엇을 반환 하는지를 알지 못하는),'encode()'호출이 반환하는 것과 왜 그것이 틀렸다고 생각 하는지를 포함합니다. IOW, 실패한 테스트 케이스를 게시하고 실패의 원인을 파악하는 데 도움을 줄 수 있습니다. – CommonsWare

답변

1

나는 URLEncoder의 역할을 오해 한 것 같습니다. UrlEncoder은 HTML 양식의 URL을 인코딩하는 방법에 대해 HTML Specifications을 구현합니다.

귀하의 경우, 제 생각에는 도서관 org.apache.commons.text이 더 나은 해결책이 될 수 있습니다. 원하는대로 문자를 이스케이프 처리하는 방법을 제공합니다.

+1

고마워, 나는'UrlEscapers.urlFragmentEscaper(). escape (string)'과 같이 퍼센트 인코딩 인 Google의 Guava lib를 사용했다. – user636066

관련 문제