사용자 도구

사이트 도구


wiki:miscellaneous:urlencoderandurldecoder

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
wiki:miscellaneous:urlencoderandurldecoder [2022/04/14 15:22]
emblim98 만듦
wiki:miscellaneous:urlencoderandurldecoder [2023/01/13 18:44] (현재)
줄 7: 줄 7:
 </WRAP> </WRAP>
 <WRAP clear></WRAP> <WRAP clear></WRAP>
- +\\ 
-===== Percent-encoding =====+\\ 
 +====== Percent-encoding ======
 퍼센트 인코딩은 URL 컨텍스트에서 특정 의미를 가지는 8bit 문다를 인코딩하는 메커니즘입니다.\\ 퍼센트 인코딩은 URL 컨텍스트에서 특정 의미를 가지는 8bit 문다를 인코딩하는 메커니즘입니다.\\
 퍼센트 인코딩은 URL 인코딩이라고 불리기도 합니다. 퍼센트 인코딩은 기호 % 다음에 대체 문자의 ASCII 값을 나타내는 16진수 표현식으로 표시됩니다.\\ 퍼센트 인코딩은 URL 인코딩이라고 불리기도 합니다. 퍼센트 인코딩은 기호 % 다음에 대체 문자의 ASCII 값을 나타내는 16진수 표현식으로 표시됩니다.\\
줄 21: 줄 22:
 | 5   | **''[''**  | **''%5B''** | 10  | **''&''**  | **''%26''** | 15  | **''+''**  | **''%2B''** | 20  | ''**' '**''| **''%20''** or **''+''** | | 5   | **''[''**  | **''%5B''** | 10  | **''&''**  | **''%26''** | 15  | **''+''**  | **''%2B''** | 20  | ''**' '**''| **''%20''** or **''+''** |
 \\ \\
-컨텍스트에 따라 ''**' '**'' 문자는 **''+''**(예: application/x-www-form-urlencoded 메시지에 사용되는 퍼센트 인코딩 버전) 또는 URL과 같은 '%20'으로 번역됩니다.+컨텍스트에 따라 ''**' '**'' 문자는 **''+''**%%(%%**''application/x-www-form-urlencoded''** 메시지에 사용되는 퍼센트 인코딩 버전에서와 같이) 또는 URL상에 표시되는 것과 같은 **''%20''**으로 변경됩니다.\\ 
 +\\ 
 +\\ 
 +====== Class URLEncoder ====== 
 +HTML form 인코딩을 위한 유틸리티 클래스입니다. 이 클래스에는 String을 application/x-www-form-urlencoded MIME 포맷으로 변환하기 위한 정적 메서드가 포함되어 있습니다. HTML 양식 인코딩에 대한 자세한 내용은 [[https://www.w3.org/TR/html4/|HTML 명세표]]를 참조하십시오.\\ 
 +\\ 
 +문자열을 인코딩할 때 다음 규칙이 적용됩니다.\\ 
 +\\ 
 +  * 영숫자 문자 "a" ~ "z", "A" ~ "Z" 및 "0" ~ "9"는 그대로 유지됩니다. 
 +  * 특수 문자 ".", "-", "*" 및 "_"는 그대로 유지됩니다. 
 +  * 공백 문자 " "는 더하기 기호 "+"로 변환됩니다. 
 +  * 다른 모든 문자는 안전하지 않기 때문에, 먼저 일부 인코딩 체계를 사용하여 하나 이상의 바이트로 변환됩니다. 그런 다음 각 바이트는 3자 문자열 "%xy"로 표시됩니다. 여기서 xy는 바이트의 2자리 16진수 표현입니다. 사용을 권장하는 인코딩 체계는 UTF-8입니다. 그러나 호환성의 이유로, 인코딩을 지정하지 않으면 플랫폼의 기본 인코딩이 사용됩니다. 
 +\\ 
 +예를 들어 UTF-8을 인코딩 체계로 사용하면, 문자열 "The string ü@foo-bar"는 "The+string+%C3%BC%40foo-bar"로 변환됩니다. 이는 UTF-8에서 문자 ü는 2바이트 C3(16진수) 및 BC(16진수)로 인코딩되고, 문자 @는 1바이트 40(16진수)으로 인코딩되기 때문입니댜.\\ 
 +\\ 
 +\\ 
 +====== Class URLDecoder ====== 
 +HTML form 디코딩을 위한 유틸리티 클래스입니다. 이 클래스에는 application/x-www-form-urlencoded MIME 형식에서 문자열을 디코딩하기 위한 정적 메서드가 포함되어 있습니다.\\ 
 +\\ 
 +변환 프로세스는 URLEncoder 클래스에서 사용하는 것과 반대입니다. 인코딩된 문자열의 모든 문자는 "a" ~ "z", "A" ~ "Z", "0" ~ "9" 및 "-", "_", ".", 그리고 "*" 중 하나입니다.\\  
 +문자 "%"는 허용되지만 특수 이스케이프 시퀀스의 시작으로 해석됩니다.\\ 
 +\\ 
 +변환에는 다음 규칙이 적용됩니다.
  
 +  * 영숫자 문자 "a" ~ "z", "A" ~ "Z" 및 "0" ~ "9"는 그대로 유지됩니다.
 +  * 특수 문자 ".", "-", "*" 및 "_"는 그대로 유지됩니다.
 +  * 더하기 기호 "+"는 공백 문자 " "로 변환됩니다.
 +  * "%xy" ​​형식의 시퀀스는 xy가 8비트를 두 자리의 16진수 표현인 바이트를 나타내는 것으로 처리됩니다. 그런 다음 이러한 바이트 시퀀스 중 하나 이상을 연속적으로 포함하는 모든 하위 문자열은 인코딩이 해당 연속 바이트를 생성하는 문자로 대체됩니다. 이러한 문자를 디코딩하는 데 사용되는 인코딩 체계가 지정될 수 있으며, 지정되지 않은 경우 플랫폼의 기본 인코딩이 사용됩니다.
 +\\
 +이 디코더가 잘못된 문자열을 처리할 수 있는 두 가지 가능한 방법이 있습니다. 잘못된 문자를 그대로 두거나 IllegalArgumentException을 throw할 수 있습니다. 디코더가 취하는 접근 방식은 구현에 달려 있습니다.\\
 +\\
 +==== Example 1 ====
 +<code java>
 +package com.ocean.escapehtml;
  
 +import java.io.UnsupportedEncodingException;
 +import java.net.URLDecoder;
 +import java.net.URLEncoder;
  
 +public class PercentEncode {
 +    
 +    // 돌체 비타 %EB%8F%8C%EC%B2%B4+%EB%B9%84%ED%83%80
 +    
 +    public static void main(String[] args) throws UnsupportedEncodingException {
 +        
 +        String encodedText = "돌체 비타";
 +        encodedText = URLEncoder.encode(encodedText, "UTF-8").replaceAll("\\+", "%20");
 +        System.out.println("encodedText ::  " + encodedText);
 +        // encodedText ::  %EB%8F%8C%EC%B2%B4%20%EB%B9%84%ED%83%80
  
 +        String decodedText = encodedText;
 +        decodedText = URLDecoder.decode(decodedText, "UTF-8");
 +        System.out.println("decodedText ::  " + decodedText);
 +        // decodedText ::  돌체 비타
 +    }
 +}
 +</code>
 +\\
 +\\
 +==== Example 2 ====
 +<code java>
 +package com.ocean.escapehtml;
  
 +import java.io.UnsupportedEncodingException;
 +import java.net.MalformedURLException;
 +import java.net.URL;
 +import java.net.URLEncoder;
  
 +public class URLEncoderExample {
 +    
 +    public static void main(String[] args) throws MalformedURLException, UnsupportedEncodingException {
 +        // base URL
 +        String baseurl = "https://www.javaguides.net/search?q=";
  
 +        // String to be encoded
 +        String query = "core+java+tutorial";
  
 +        URL url = new URL(baseurl + query);
 +        System.out.println("URL without encoding : " + url); 
 +        // URL without encoding : https://www.javaguides.net/search?q=core+java+tutorial
  
 +        // encode() method
 +        url = new URL(baseurl + URLEncoder.encode(query, "UTF-8"));
 +        System.out.println("URL after encoding : " + url);
 +        // URL after encoding : https://www.javaguides.net/search?q=core%2Bjava%2Btutorial
 +    }
 +}
 +</code>
 +\\
 +\\
 +==== Example 3 ====
 +<code java>
 +package com.ocean.escapehtml;
  
 +import java.io.UnsupportedEncodingException;
 +import java.net.MalformedURLException;
 +import java.net.URL;
 +import java.net.URLDecoder;
 +import java.net.URLEncoder;
  
 +public class URLDecoderExample {
 +    
 +    public static void main(String[] args) throws MalformedURLException, UnsupportedEncodingException {
 +        // base URL
 +        String baseurl = "https://www.javaguides.net/search?q=";
 +        
 +        // String to be encoded
 +        String query = "core+java+tutorial";
  
 +        URL url = new URL(baseurl + query);
 +        System.out.println("(1) Original URL: " + url);
 +        // (1) Original URL: https://www.javaguides.net/search?q=core+java+tutorial
  
 +        String encodedStr = URLEncoder.encode(query, "UTF-8");
 +        url = new URL(baseurl + encodedStr);
 +        System.out.println("(2) Encoded URL : " + url);
 +        // (2) Encoded URL : https://www.javaguides.net/search?q=core%2Bjava%2Btutorial
  
 +        // decode() method
 +        String decodedStr = URLDecoder.decode(encodedStr, "UTF-8");
 +        System.out.println("(3) Decoded URL : " + baseurl + decodedStr);
 +        // (3) Decoded URL : https://www.javaguides.net/search?q=core+java+tutorial
 +    }
 +}
 +</code>
  
  
  
  
 +
 +
 +
 +
 +
 +===== Ref Site =====
 +[[https://developer.mozilla.org/en-US/docs/Glossary/percent-encoding|Percent-encoding]]\\
 +\\
 +[[https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html|Class URLEncoder]]\\
 +\\
 +[[https://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html|Class URLDecoder]]\\
 +\\
 +[[https://www.javaguides.net/2019/05/java-urlencoder-and-urldecoder-class.html|URLEncoder Class Overview]]\\
 +\\
 {{tag> 오션, URLEncoder, encode, URLDecoder, decode, PercentEncoding}} {{tag> 오션, URLEncoder, encode, URLDecoder, decode, PercentEncoding}}
/volume1/web/dokuwiki/data/attic/wiki/miscellaneous/urlencoderandurldecoder.1649917373.txt.gz · 마지막으로 수정됨: 2022/04/14 15:22 저자 emblim98