참고 : 컴퓨터에 저장된 모든 텍스트 정보는 특정 인코딩 테이블 (0, 1, 0, 1)에서 우리가 알고있는 문자 (중국어 또는 영어 문자)를 저장합니다. 문자에서 컴퓨터 스토리지까지의 이진 프로세스가 인코딩되고 있으며 이진을 읽는 것부터 텍스트로의 프로세스를 디코딩이라고합니다. 문자 인코딩을위한 다양한 인코딩 테이블이 있으므로 인코딩 형식 및 디코딩 형식이 동일한 코드 테이블이 아닌 경우, 차량 코드가 나타납니다. 차량 코드를 피하려면 저장 및 읽기시 동일한 코드 테이블을 사용해야합니다.
Java 웹 프로그래밍에는 종종 차량 코드가 있습니다. 이제 차량 코드를 피하기 위해 설정하는 방법에 대해 자세히 설명하겠습니다.
1 웹 페이지 인코딩
웹 페이지를 작성할 때는 웹 페이지의 인코딩 형식을 지정하고 <meta http-equiv = "content-type"content = "text/html; charset = utf-8">를 사용하여 지정해야합니다. 현재 브라우저가 요청을 읽거나 보내면 지정된 인코딩 형식으로 데이터가 저장되거나 전송됩니다. 여기는 UTF-8의 형태입니다.
예를 들어 코드 스 니펫 :
<form action = "/pro1/bb"method = "post"> username : <input type = "text"name = "username"> <br> gender : male <input type = "gender"value = "male"> female <입력 유형 = "radio"name = "gender"value = "famoll"> favorte color : <br> red <input <input <input <input <input <input type = "input <input <input <input type = <bbox" green <input type = "checkbox"name "="color "value ="green "> blue <input type ="checkbox "name ="color "value ="blue "> <br> <select name ="country "> <옵션 value ="옵션 </옵션> <옵션 값 = "us"> us </옵션> <옵션 value = "Japan"> 옵션> <bbr> <input> <input> <input> <input " 타입 = "재설정"value = "Reset"> </form>
2 백엔드 요청 데이터를 읽습니다
Java Web의 서블릿에서 요청 된 데이터를 얻으려면 해당 하이너리 데이터를 해당 코드 테이블에 따라 디코딩하여 해당 휴머가 읽을 수있는 문자열을 얻습니다. 이 예에서는 게시물 메소드가 사용되므로 게시물 요청을 처리 할 때는 중국어 요청 매개 변수를 얻기 전에 인코딩 형식을 설정해야합니다. 그렇지 않으면 차량이 발생합니다. 서버는 디코딩을 위해 기본적으로 ISO-8859-1 인코딩 테이블을 사용하기 때문입니다.
물론, 출력에서 한자를 출력하려면 통합 문자 인코딩을 사용해야합니다. 다음은 UTF-8이며 코드는 다음과 같습니다
public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {request.setcharacterencoding ( "utf-8"); Response.setContentType ( "Text/Html; charset = utf-8"); printwriter out = response.getwriter (); 문자열 username = request.getParameter ( "사용자 이름"); 문자열 gender = request.getParameter ( "성별"); 문자열 [] colors = request.getParametErvalues ( "color"); 문자열 country = request.getParameter ( "Country"); out.println ( "<! doctype html>"); out.println ( "<head> <title> 테스트 서블릿 </title> </head>"); out.println ( "<body>"); out.print ( "<h1> 다음은 입력 </h1>"); out.print ( "<p>"); out.print ( "사용자 이름 :"+username+"<br>"); out.print ( "당신의 성별 :"+성별+"<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>"); }참고 : request.setcharacterencoding ( "UTF-8"); 다음은 요청 엔티티의 내용에만 유효합니다. 사후 요청 매개 변수는 요청 엔티티에 저장되며 Get 메소드의 요청 매개 변수는 URL 이후에 배치되고 물음표로 시작하고 '&'여러 매개 변수를 연결합니다. 따라서 Get 메소드의 매개 변수를 얻으려면 수동 디코딩을 사용하거나 필터를 사용해야합니다.
수동 디코딩 방법, 단순성을 위해 성별 해독 만, 그리고 실제로 사용하면 각 매개 변수는 디코딩되어야합니다. 문자열 gender = new String (req.getParameter ( "gender"). getBytes ( "ISO-8859-1"), "UTF-8");
이 시점에서 웹과 서버쪽에있는 한자의 현상은 완벽하게 해결 될 수 있습니다. 한 가지를 기억하십시오. 한 손에 달린 것은 인코딩 및 디코딩이 다른 인코딩 테이블을 사용하기 때문입니다. 문제를 해결하려면 동일한 인코딩 테이블을 사용해야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.