질문 : 쿼리 문자열 매개 변수의 Java URL 인코딩
URL이 있다고
http://example.com/query?q=
사용자가 입력 한 다음과 같은 쿼리가 있습니다.
임의의 단어 £ 500 bank $
결과가 올바르게 인코딩 된 URL이되기를 원합니다.
http://example.com/query?q=random%20word%20%A3500%20bank%20%24
이를 달성하는 가장 좋은 방법은 무엇입니까? URLEncoder
시도하고 URI / URL 개체를 만들었지 만 어느 것도 제대로 나오지 않았습니다.
답변
URLEncoder
는 갈 길입니다. 당신은 확실하지 쿼리 문자열 매개 변수를 구분 문자, 인코딩에 마음 만 개별 쿼리 문자열 매개 변수 이름 및 / 또는 값이 아닌 전체 URL을 유지할 필요가 &
나 매개 변수 이름과 값의 분리 문자 =
.
String q = "random word £500 bank $";
String url = "https://example.com?q=" + URLEncoder.encode(q, StandardCharsets.UTF_8);
Java 10 이상이 아닌 경우에는 StandardCharsets.UTF_8.toString()
을 charset 인수로 사용하거나 Java 7 이상이 아닌 경우 "UTF-8"
.
쿼리 매개 변수의 공백은 합법적으로 유효한 %20
아니라 +
%20
?
뒤의 부분)이 아니라 ?
앞의 부분)에서 공백을 나타내는 데 사용됩니다.
또한 세 가지 encode()
메서드가 있습니다. 하나는 Charset
을 두 번째 인수로 사용 String
을 두 번째 인수로 사용하여 확인 된 예외를 발생시킵니다. Charset
인수가없는 것은 더 이상 사용되지 않습니다. 절대 사용하지 말고 항상 Charset
인수를 지정하십시오. javadoc 은 RFC3986 및 W3C에서 요구하는 UTF-8 인코딩을 사용하도록 명시 적으로 권장합니다.
다른 모든 문자는 안전하지 않으며 먼저 일부 인코딩 체계를 사용하여 하나 이상의 바이트로 변환됩니다. 그런 다음 각 바이트는 3 자 문자열 "% xy"로 표시됩니다. 여기서 xy는 바이트의 두 자리 16 진수 표현입니다. 사용할 권장 인코딩 체계는 UTF-8 입니다. 그러나 호환성을 위해 인코딩이 지정되지 않은 경우 플랫폼의 기본 인코딩이 사용됩니다.
출처 : https://stackoverflow.com/questions/10786042/java-url-encoding-of-query-string-parameters
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java에서 파일을 byte []로 변환하는 방법 (0) | 2021.12.29 |
---|---|
JAVA Implements vs extends 차이점과 사용시기 (0) | 2021.12.29 |
JavaScript 링크 "#" vs "javascript : void (0)" (0) | 2021.12.19 |
Java Swing에서 set (Preferred | Maximum | Minimum) Size 메서드를 사용하면 안되는 이유 (0) | 2021.12.19 |
Java Class에서 canonical name, simple name, class name의 차이점 (0) | 2021.12.15 |