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
은 API에 대한 직접적인 지원을 추가 하여 UnsupportedEncodingException을 잡을 필요가 없습니다.
String result = java.net.URLDecoder.decode(url, StandardCharsets.UTF_8);
• 그래도 참고 문자 인코딩 (예 : UTF-8 또는 ASCII와 같은)를 원시 바이트 문자의 매핑을 결정하는 것입니다. 문자 인코딩에 대한 좋은 소개는 이 기사를 참조 하십시오 .
답변
가지고있는 문자열은 application/x-www-form-urlencoded
인코딩입니다.
URLDecoder 를 사용 하여 Java 문자열로 변환하십시오.
URLDecoder.decode( url, "UTF-8" );
답변
이것은 이전 에 답변되었습니다 (이 질문은 처음이지만!) :
“URLDecoder 클래스가 잘못된 x-www-form-urlencoded 디코딩을 수행하기 때문에 java.net.URI를 사용해야합니다 (이름에도 불구하고 양식 데이터 용임).”
로 URL 클래스의 문서 상태 :
URL 인코딩 및 디코딩을 관리하는 데 권장되는 방법은 URI 를 사용 하고 toURI () 및 URI.toURL () 을 사용
하여이 두 클래스 간을 변환하는 것 입니다.URLEncoder 와 URLDecoder 클래스도 만에 정의 된 인코딩 방식과 동일하지 않습니다 HTML 양식 인코딩에 사용할 수있다 RFC2396 .
원래:
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 인코딩 된 문자입니다. 로 다시 변환이 자바 코드를 사용 :
하고/
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;
}