URL 디코딩은 Java에서 어떻게 하나요?
Java에서는 다음을 변환합니다.
https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type
이를 위해:
https://mywebsite/docs/english/site/mybook.do&request_type
지금까지 제가 알아낸 건 다음과 같습니다.
class StringUTF
{
public static void main(String[] args)
{
try{
String url =
"https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do" +
"%3Frequest_type%3D%26type%3Dprivate";
System.out.println(url+"Hello World!------->" +
new String(url.getBytes("UTF-8"),"ASCII"));
}
catch(Exception E){
}
}
}
하지만 제대로 작동하지 않습니다.이것들은 무엇입니까?%3A
그리고.%2F
포맷을 호출하고 변환하려면 어떻게 해야 합니다.
이것은 UTF-8이나 ASCII 등의 문자 인코딩과는 관계가 없습니다.여기에 있는 문자열은 URL로 인코딩되어 있습니다.이런 종류의 부호화는 문자 부호화와는 전혀 다릅니다.
다음과 같은 방법을 사용해 보십시오.
try {
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
// not going to happen - value came from JDK's own StandardCharsets
}
Java 10에 대한 직접 지원이 추가되었습니다.Charset
Unsupported Encoding Exception을 캐치할 필요가 없습니다.
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8);
문자 인코딩(UTF-8이나 ASCII 등)은 문자와 원시 바이트의 매핑을 결정합니다.문자 인코딩에 대한 좋은 소개는 이 문서를 참조하십시오.
당신이 가지고 있는 끈은 안에 있다.application/x-www-form-urlencoded
부호화를 실시합니다.
URLDecoder를 사용하여 Java String으로 변환합니다.
URLDecoder.decode( url, "UTF-8" );
이것은 이전에 답변된 적이 있습니다(이 질문은 처음이었습니다만).
java.net 를 사용해 주세요.URLDecoder 클래스가 x-www-form-urlencoded 디코딩을 할 때 URI가 이를 위해 사용됩니다(이름에 관계없이 폼 데이터용).
URL 클래스 문서에는 다음과 같이 기술되어 있습니다.
URL 인코딩 및 디코딩을 관리하는 권장 방법은 URI를 사용하고 toURI()와 URI.toURL()을 사용하여 이들2개의 클래스 사이를 변환하는 것입니다.
URLEncoder 및 URLDecoder 클래스도 사용할 수 있지만 RFC2396에서 정의되어 있는 인코딩 방식과는 다른HTML 형식의 인코딩에만 사용할 수 있습니다.
기본적으로:
String url = "https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type";
System.out.println(new java.net.URI(url).getPath());
다음과 같은 것이 있습니다.
https://mywebsite/docs/english/site/mybook.do?request_type
%3A
그리고.%2F
는 URL 인코딩 문자입니다.이 Java 코드를 사용하여 다시 변환합니다.:
그리고./
String decoded = java.net.URLDecoder.decode(url, "UTF-8");
try {
String result = URLDecoder.decode(urlString, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public String decodeString(String URL)
{
String urlString="";
try {
urlString = URLDecoder.decode(URL,"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
}
return urlString;
}
String decodedUrl = new URLCodec().decode(url);
기본 문자 집합은 다음과 같습니다.UTF-8
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
public class URLDecoding {
String decoded = "";
public String decodeMethod(String url) throws UnsupportedEncodingException
{
decoded = java.net.URLDecoder.decode(url, "UTF-8");
return decoded;
//"You should use java.net.URI to do this, as the URLDecoder class does x-www-form-urlencoded decoding which is wrong (despite the name, it's for form data)."
}
public String getPathMethod(String url) throws URISyntaxException
{
decoded = new java.net.URI(url).getPath();
return decoded;
}
public static void main(String[] args) throws UnsupportedEncodingException, URISyntaxException
{
System.out.println(" Here is your Decoded url with decode method : "+ new URLDecoding().decodeMethod("https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest_type"));
System.out.println("Here is your Decoded url with getPath method : "+ new URLDecoding().getPathMethod("https%3A%2F%2Fmywebsite%2Fdocs%2Fenglish%2Fsite%2Fmybook.do%3Frequest"));
}
}
방법을 현명하게 선택할 수 있습니다:)
정수값이면 Number를 잡아야 합니다.Format Exception도 마찬가지입니다.
try {
Integer result = Integer.valueOf(URLDecoder.decode(urlNumber, "UTF-8"));
} catch (NumberFormatException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
java.net 를 사용합니다.URI 클래스:
public String getDecodedURL(String encodedUrl) {
try {
URI uri = new URI(encodedUrl);
return uri.getScheme() + ":" + uri.getSchemeSpecificPart();
} catch (Exception e) {
return "";
}
}
예외 처리는 더 나을 수 있지만 이 예와 크게 관련이 없습니다.
언급URL : https://stackoverflow.com/questions/6138127/how-to-do-url-decoding-in-java
'programing' 카테고리의 다른 글
왜 이 두 번을 빼면 이상한 결과가 나올까요? (0) | 2022.07.29 |
---|---|
Vue 2.0에서의 CSS 클래스 전환 (0) | 2022.07.29 |
2개의 클래스에서 확장 (0) | 2022.07.29 |
어레이 정렬을 사용하여 모바일에서 작동하지 않는 vue의 요소를 재배치하시겠습니까? (0) | 2022.07.29 |
검증 규칙을 필드에 프로그래밍 방식으로 첨부합니다. (0) | 2022.07.29 |