>웹 프론트엔드 >프런트엔드 Q&A >HTML 게시물이 깨졌을 경우 대처 방법

HTML 게시물이 깨졌을 경우 대처 방법

藏色散人
藏色散人원래의
2021-05-27 10:40:452275검색

잘못된 HTML 게시물에 대한 해결 방법: 먼저 해당 코드 파일을 연 다음 게시물에서 전달된 ISO 인코딩 콘텐츠를 UTF-8 형식 콘텐츠로 변경하세요.

HTML 게시물이 깨졌을 경우 대처 방법

이 기사의 운영 환경: Windows 7 시스템, HTML5 버전, DELL G3 컴퓨터

HTML은 게시 방법을 사용하여 중국어 콘텐츠를 제출하고 오류 해결 방법이 깨졌습니다.

오늘 예제를 수행할 때 다음을 사용하세요. post 방식으로 양식을 제출하면, 중국어가 있는 경우 다른 페이지에 표시될 때 항상 잘못된 문자가 나타납니다.

그러나 제출 방식을 get로 변경하면 이 오류가 발생하지 않습니다.

자세한 오류는 아래 사진과 코드를 참조하세요.

HTML 코드:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>测试Cookie的设置和获取</title>
 6 </head>
 7 <body>
 8     <form action="/TestTomcat/SetCookie" method="post">
 9         站点名:<input type="text" name="name"><br>
10         站点URL:<input type="text" name="url"><br>
11         <input type="submit" value="提交" />
12     </form>
13 </body>
14 </html>

서블릿 코드, 일부 차단:

 1 response.setContentType("text/html;charset=utf-8");
 2         
 3         PrintWriter out=response.getWriter();
 4         
 5         String title="设置Cookie实例";
 6         String docType="<! DOCTYPE html>\n";
 7         out.println(docType+
 8                 "<html>\n"+
 9                 "<head><title>"+title+"</title></head>"+
10                 "<body bgcolor=\"#f0f0f0\">\n"+
11                 "<h1 align=\"center\">"+title+"</h1>\n"+
12                 "<ul>\n" +
13                 "  <li><b>站点名:</b>"
14                 + request.getParameter("name")  + "\n</li>" +
15                 "  <li><b>站点 URL:</b>"
16                 + request.getParameter("url") + "\n</li>" +
17                 "</ul>\n" +
18                 "</body></html>");

Error:

처음에는 코드 블록이 잘못된 위치에 배치된 줄 알고 doPost에 위 코드를 넣어서 시도해 보았습니다. . 이 오류가 계속 발생합니다.

그렇다면 포스트 방식으로 중국어를 전송하는 방법은 무엇일까요?

정보를 검색하여

게시물로 제출
이 경우 response.setCharacterEncoding이 영향을 미칩니다. response.setCharacterEncoding이 설정되지 않은 경우 값은 null이며 다시 iso-8859-1이 기본적으로 사용됩니다. 인코딩(디코딩).
브라우저는 자체 페이지의 인코딩 형식을 시작 인코딩 형식으로 사용하며, 문자를 바이트로 인코딩하여 전송합니다. Tomcat의 경우 Tomcat은 재인코딩(디코딩) 형식을 방해하지 않습니다. response.getCharacterEncoding이 null인 경우 iso-8859-1은 기본적으로 문자를 다시 인코딩(디코딩)하는 데 사용됩니다. 설정된 경우 문자는 설정된 인코딩 형식에 따라 다시 인코딩(디코딩)됩니다.

POST는 단일 바이트 데이터를 전송하므로 POST에서 전송되는 데이터 인코딩은 ISO-8859-1 단일 바이트 데이터이므로 영어와 숫자가 왜곡되지 않습니다. 이 경우 필터 및 물론, request.setCharacterEncoding()도 유효하지 않습니다. 왜냐하면 setCharacterEncoding의 원리는 필터의 원리와 동일하기 때문입니다.

위 문제를 처리하는 올바른 방법은 다음과 같습니다.

 String nameStr=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");

게시물을 전달하세요. 넘어오는 ISO 인코딩된 콘텐츠는 UTF-8 형식의 콘텐츠로 변경된 후 출력됩니다.

추천 학습: "HTML 비디오 튜토리얼"

위 내용은 HTML 게시물이 깨졌을 경우 대처 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.