>  기사  >  백엔드 개발  >  PHP 요청이 왜곡되는 문제를 해결하는 방법

PHP 요청이 왜곡되는 문제를 해결하는 방법

藏色散人
藏色散人원래의
2020-10-20 09:39:402278검색

잘못된 PHP 요청에 대한 해결 방법: 먼저 tomcat의 server.xml을 연 다음 요소의 속성을 "URIEncoding="UTF-8""로 설정하세요.

PHP 요청이 왜곡되는 문제를 해결하는 방법

권장: "PHP 비디오 자습서"

요청, 응답 중국어 왜곡 코드 문제 및 솔루션

요청 왜곡 코드는 다음을 의미합니다. 브라우저에서 서버로 보낸 요청 매개변수에는 중국어 문자가 포함되어 있습니다. 서버 획득한 요청 매개변수의 값이 깨졌습니다.

응답이 깨졌습니다. 코드는 서버에서 브라우저로 보낸 데이터에 중국어 문자가 포함되어 있고 브라우저가 깨져 있는 문자를 표시한다는 의미입니다. 요청이 깨졌는지 여부에 관계없이 응답이 깨졌거나 깨졌는지 여부는 실제로 클라이언트(브라우저)와 서버에서 사용하는 인코딩 형식이 일치하지 않기 때문에 발생합니다. 잘못된 요청을 예로 들어 보겠습니다. 브라우저는 서버에 요청을 보냅니다. 브라우저와 서버 간의 통신은 기본적으로 소켓 스트림이므로 먼저 요청 매개변수(문자)를 바이트로 변환해야 합니다. 이는 인코딩 프로세스입니다. 서버는 요청 매개변수를 수신하고(바이트를 문자로 변환) 요청 객체에 캡슐화합니다. 클라이언트의 인코딩이 서버의 디코딩과 일치하지 않으면 요청을 통해 얻은 요청 매개변수의 값이 왜곡됩니다.

해결 방법:

1. 문자가 왜곡된 응답

서버에서 브라우저로 보낸 데이터는 기본적으로 ISO-8859-1에 따라 인코딩되며, 해당 데이터는 ISO-8859-1에 따라 인코딩됩니다. 기본 문자 집합으로 브라우저의 기본 디코딩 문자 집합이 ISO-8859-1이 아니며 잘못된 문자가 나타납니다.

잘못된 응답의 경우 서버 측에서 인코딩 문자 집합을 지정한 다음 이 문자 집합에 따라 디코딩하도록 브라우저에 알리기만 하면 됩니다. 세 가지 방법이 있습니다:

1. A. 서버 측 인코딩 설정

response.setCharacterEncoding("utf-8")

기본값은 ISO-8859-1입니다. 이 방법은 response.getWriter 전에 설정해야 합니다. ()

B. 서버에서 보낸 데이터 형식을 브라우저에 알림

      response.setHeader("contentType", "text/html; charset=utf-8")

2. A. 브라우저에 알림 서버에서 보낸 데이터 형식

response.setContentType("text/html; charset=utf-8");

은 response.setHeader("contentType", "text/html; charset=utf-8"과 동일합니다. ); 이는 실제로 response.setCharacterEncoding("utf-8")을 재정의하므로 개발 중에는

B만 설정하면 됩니다. 서버측 인코딩

response.setContentType("text/html;charset=utf-8)을 설정하십시오. ");

3. A. 서버측 인코딩 설정

response.setCharacterEncoding("utf-8");

B. 브라우저는 디코딩을 위해 utf-8을 사용합니다

         

요약: 설정:

A. 서버측 인코딩을 설정합니다

response.setCharacterEncoding("utf- 8");

B. 서버에서 보낸 데이터 형식을 브라우저에 알립니다

response.setContentType("text/html;charset=utf -8");

C. 브라우저는 디코딩을 위해 utf-8을 사용합니다

​​​​​

만약에 대비해 이렇게 설정했습니다.

2. 요청이 깨졌습니다.

여기 브라우저에서 접속하는 방법에는 세 가지가 있습니다. 주소 표시줄에 URL을 직접 입력하여 접속하고, 페이지의 하이퍼링크를 클릭하여 접속하고, 양식을 제출하여 접속합니다. 첫 번째 액세스 방법의 브라우저는 기본적으로 UTF-8에 따라 매개변수를 인코딩하고, 후자 두 가지 액세스 방법의 브라우저는 현재 페이지의 디스플레이 인코딩에 따라 매개변수를 인코딩합니다. 따라서 왜곡된 문자를 요청하는 경우 서버 측에서 해당 디코딩 형식을 설정하기만 하면 됩니다. 다양한 액세스 방법으로 인해 브라우저는 처리를 용이하게 하기 위해 하이퍼링크 및 양식을 통한 액세스도 UTF-8 형식이어야 합니다. 즉, 현재 페이지를 표시하기 위한 인코딩도 UTF-8을 사용해야 합니다. 8이므로 찾아보세요. 프로세서는 UTF-8을 균일하게 사용하여 매개변수를 인코딩합니다.

A. 게시 방법

게시 방법은 양식 제출에 속하며 매개변수는 요청 본문에 존재합니다.

request.setCharacterEncoding("utf-8")

B. get 메소드

get 메소드로 제출된 매개변수는 요청 라인의 uri를 따르며, 서버는 기본 iso-8859-1에 따라 이를 디코딩합니다. 이번에는 해결되었습니다. 문자 깨짐을 일으키는 방법에는 두 가지가 있습니다:

방법 1: 서버 측에서 uri 매개변수의 기본 인코딩을 수정합니다.

Tomcat의 server.xml에서 해당 요소의 속성을 URIEncoding="UTF-8"로 설정합니다. . (이 속성은 기본적으로 설정되지 않습니다.)

예: 참고: 1. 요소의 속성 useBodyEncodingForURI="true"를 설정합니다. 이는 요청 본문과 URI가 동일한 인코딩 형식을 사용함을 의미합니다. 이 두 속성을 설정하면 get 메소드의 잘못된 코드와 post 메소드의 잘못된 코드를 모두 해결할 수 있습니다. 2. 서버를 수정하여 서버가 UTF-8에 따라 GET 및 POST를 디코딩하도록 지정합니다.

위 내용은 PHP 요청이 왜곡되는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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