java 웹 요청 및 응답에서 중국어 디코딩 문제 분석
자바 웹 프로그래밍에서 자주 디코딩이 발생합니다. 디코딩을 피하는 방법을 자세히 설명합니다.
1 웹 인코딩
웹 페이지를 작성할 때 웹 페이지의 인코딩 형식을 지정해야 합니다. 을 사용하여 지정합니다.브라우저가 요청을 읽거나 보낼 때 지정한 인코딩 형식으로 데이터를 저장하거나 보냅니다.여기는utf-8 형식입니다.
예를 들어 코드 세그먼트:
  <form action="/Pro1/bb" method="post">
   :
  <input type="text" name="username" ><br>
  
   :
   <input type="radio" name="gender" value=" ">  <input type="radio" name="gender" value=" "><br>
  
   :<br>
   <input type="checkbox" name="color" value=" ">    <input type="checkbox" name="color" value=" ">  
   <input type="checkbox" name="color" value=" "> 
   
  <br>  
  <select name="country">
   <option value=" "> </option>
   <option value=" "> </option>
   <option value=" "> </option>
  </select>
  
  <br>
  <input type="submit" value=" "> 
  <input type="reset" value=" ">
  
  
 </form>
자바 웹의 servlet에서 요청한 데이터를 얻으려면 전송된 2진 데이터를 상응하는 코드표에 따라 디코딩해야 상응하는 인류가 문자열을 읽을 수 있다.이 예는post 방법을 사용하기 때문에post 요청을 처리할 때 중국어로 된 요청 파라미터를 얻기 전에 인코딩 형식을 설정해야 합니다. 그렇지 않으면 디코딩이 발생합니다.서버는 기본적으로 iso-8859-1 인코딩 테이블을 사용하여 디코딩하기 때문입니다.
물론 출력에서 중국어 문자를 출력하려면 통일된 문자 인코딩을 사용해야 합니다. 여기는utf-8입니다. 코드는 다음과 같습니다.
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  PrintWriter out = response.getWriter();
  String username = request.getParameter("username");
  String gender = request.getParameter("gender");
  String[] colors = request.getParameterValues("color");
  String country = request.getParameter("country");
  
  out.println("<!DOCTYPE HTML>");
  out.println("<HTML>");
  out.println(" <HEAD><TITLE> servlet</TITLE></HEAD>");
  out.println(" <BODY>");
  out.print("<h1> </h1>");
  
  out.print("<p>");
  out.print(" :"+username+"<br>");
  out.print(" :"+gender+"<br>");
  out.print(" :");
  for(String cr:colors){
   out.print(cr+" ");
  }
  out.print("<br>");
  
  out.print(" :"+country+"<br>");
  
  out.print("</p>");
  
  out.println(" </BODY>");
  out.println("</HTML>");
 }
수동 디코딩 방법은 간단하게 성별만 디코딩하기 위해 실제 사용에서 매개 변수를 디코딩해야 합니다: String gender = new String(req.getParameter("gender").getBytes("iso-8859-1"),"utf-8") ;
이때가 되면 웹 페이지와 서버 측에서 한자 부호가 발생하는 현상을 완벽하게 해결할 수 있다. 기억해라. 부호가 발생하는 것은 모두 인코딩과 디코딩이 서로 다른 인코딩 테이블을 사용하기 때문에 같은 인코딩 테이블을 사용하면 문제를 해결할 수 있다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.