CORE
HOME > JAVA > J2SE > CORE
2020.10.03 / 18:21

java - 특수문자 - url 인코딩

추석돌이
추천 수 12

URL Java에서 특수 문자 인코딩 및 디코딩 (3)

구아바를 시험해 보라.

com.google.common.net.UrlEscapers를 사용하십시오.

그것은 중국과 잘 작동합니다.

이렇게 :

Escaper escaper = UrlEscapers.urlFragmentEscaper();
String result = escaper.escape(yoururl);

자바에서는 HTTP POST를 사용하여 서버에 요청을 보내야하지만 URL의 매개 변수에 특수 문자가 포함 된 경우 예외 아래에 throw됩니다.

java.lang.IllegalArgumentException : URLDecoder : 이스케이프 (%) 패턴의 잘못된 16 진수 문자 - 입력 문자열의 경우 : "& '"

데이터를 보내는 코드

DefaultHttpClient httpclient = new DefaultHttpClient(); 
   HttpPost httpPost = new HttpPost(URL); 

   String sessionId = RequestUtil.getRequest().getSession().getId();
   String data = arg.getData().toString();

   List<NameValuePair> params = new ArrayList<NameValuePair>();   
   params.add(new BasicNameValuePair(param1, data));
   params.add(new BasicNameValuePair(param2, sessionId));
         httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));           

   HttpResponse response = (HttpResponse) httpclient.execute(httpPost);

그리고 서버 측에서는 아래 코드를 사용하여 정보를 읽습니다.

 String data = request.getParameter(param1);
   if (data != null) {
    actionArg = new ChannelArg(URLDecoder.decode(data, "UTF-8"));
   }

코드가 올바르게 작동하지만 [a あ あ # $ % & '(<>? /., あ あ あ ああ]와 같은 특수 문자를 입력하면 예외가 발생합니다. 누군가가 인코딩 할 수있는 힌트를 줄 수 있는지 궁금합니다. 특수 문자를 디코딩합니까?

대단히 감사드립니다.


슬프게도 URL 엔코더가 문제를 해결하지 못합니다. 나는이 문제를 가지고 있으며 커스텀 유틸리티를 사용했다. 나는 이것이 내가 인터넷 검색에서 얻은 것을 기억한다.).

http://www.javapractices.com/topic/TopicAction.do?Id=96


String data = request.getParameter(param1);

이것이 서블릿 API 인 경우 매개 변수가 이미 디코딩되었습니다. 퍼센트 인코딩을 더 이상 처리 할 필요가 없습니다.

HttpClient를 사용하지 않았지만 헤더에 인코딩을 보내고 있는지 확인하십시오.

Content-type: application/x-www-form-urlencoded; charset=UTF-8

또는, 필요한 경우, getParameter 호출 전에 알려진 인코딩을 설정하십시오.

request.setCharacterEncoding("UTF-8");