AJAX와 결합된 PHP를 사용하여 개발하는 과정에서 중국어 전송 중에 잘못된 문자가 나타나는 일반적인 문제에 직면할 수 있습니다. 이는 PHP에서 사용되는 기본 인코딩 방법이 ISO-8859-1인 반면 AJAX에서 사용되는 기본 인코딩 방법은 UTF-8이기 때문입니다. 두 가지가 호환되지 않아 전송 과정에서 문자가 깨집니다. 이 기사에서는 PHP와 AJAX에서 전송되는 중국어 문자 깨짐 문제를 해결하는 방법을 소개합니다.
AJAX는 프런트엔드와 백엔드 간의 비동기 상호작용을 위한 솔루션입니다. AJAX를 통해 페이지를 새로 고치지 않고도 백엔드로 요청을 보낼 수 있으며, 반환된 데이터를 받을 수 있습니다. 뒷머리. 중국어 전송에 AJAX를 사용할 경우 문자가 깨질 수 있습니다.
예를 들어 다음과 같은 간단한 AJAX 요청은 다음과 같습니다.
$.ajax({ url: "test.php", type: "POST", data: { name: "张三", age: 20 }, success: function (result) { console.log(result); } });
위 코드에서는 test.php에 POST 요청을 보내고 "name"이 "Zhang San"이고 "age"가 20인 데이터를 전달했습니다. 그러나 백엔드에서 이 요청 매개변수를 수신하면 중국어 문자가 깨져 표시됩니다.
이 문제에 대한 해결책은 매우 간단합니다. AJAX 요청을 보내기 전에 데이터를 UTF-8 인코딩으로 변환하면 됩니다. 위 코드를 다음과 같이 수정하세요.
$.ajax({ url: "test.php", type: "POST", data: { name: encodeURIComponent("张三"), age: 20 }, success: function (result) { console.log(result); } });
위 코드에서는 encodeURIComponent를 사용하여 "이름"을 인코딩하고 중국어를 UTF-8 인코딩으로 변환하여 중국어 문자가 깨지는 것을 방지합니다.
이전 장에서 AJAX 요청에서 인코딩 변환을 수행하는 방법을 소개했는데, 이 UTF-8로 인코딩된 데이터를 백엔드 PHP에서 받는 방법은 무엇일까요?
PHP에서는 $_POST를 통해 POST 요청의 매개변수를 얻을 수 있습니다. 그러나 기본적으로 PHP에서 사용하는 인코딩 방법은 ISO-8859-1이며 이는 UTF-8 인코딩과 호환되지 않으므로 데이터를 얻을 때 해당 인코딩 변환을 수행해야 합니다.
test.php 파일을 다음과 같이 수정합니다.
<?php header('Content-Type:text/html;charset=utf-8');//设置响应头为utf-8编码 $name = $_POST["name"]; $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码 echo $name; ?>
위 코드에서는 먼저 응답 헤더를 UTF-8 인코딩으로 설정한 다음 $_POST를 통해 매개변수를 얻은 다음 마지막으로 iconv 함수를 사용하여 UTF-8로 변환합니다. 8개의 인코딩된 매개변수 GBK를 인코딩하여 중국어 문자가 깨지는 것을 방지합니다.
실제 응용 프로그램에서는 일반적으로 JSON 형식으로 데이터를 전송합니다. JSON을 통해 중국어를 전송할 때 인코딩 문제에도 주의가 필요합니다.
예를 들어 다음과 같은 간단한 JSON 데이터가 있습니다.
var data = { name: "张三", age: 20 };
위 코드에서는 "name" 및 "age" 속성이 포함된 JSON 데이터를 정의합니다. 여기서 "name"은 중국어 "Zhang San"입니다.
JSON 데이터를 백엔드 PHP에 전달할 때 데이터도 인코딩하고 변환해야 합니다. 위 코드를 다음과 같이 수정하세요.
var data = { name: encodeURIComponent("张三"), age: 20 };
위 코드에서는 encodeURIComponent를 사용하여 "이름"을 인코딩하고 중국어를 UTF-8 인코딩으로 변환하여 중국어 문자가 깨지는 것을 방지합니다.
백엔드 PHP에서는 해당 인코딩 변환도 필요합니다. test.php 파일을 다음과 같이 수정합니다.
<?php $data = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents('php://input');//获取JSON数据 $data = json_decode($data,true);//将JSON数据解码为数组 $name = $data["name"]; $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码 echo $name; ?>
위 코드에서는 먼저 $GLOBALS['HTTP_RAW_POST_DATA'] 또는 file_get_contents('php://input')를 통해 JSON 데이터를 얻은 후 다음을 통해 JSON 데이터를 디코딩합니다. json_decode 배열을 사용하고 마지막으로 iconv 함수를 사용하여 UTF-8로 인코딩된 매개변수를 GBK 인코딩으로 변환하여 중국어 문자가 왜곡되는 것을 방지합니다.
AJAX와 결합된 PHP를 사용하여 개발할 때 중국어 전송 중에 문자가 깨질 수 있습니다. 이 문제를 해결하려면 데이터를 PHP의 기본 인코딩과 호환되도록 인코딩해야 합니다. 데이터 전송에 JSON을 사용할 때는 인코딩 문제에도 주의가 필요합니다. 이 글의 소개를 통해 독자들이 PHP와 AJAX에서 전송되는 중국어 문자 왜곡 문제를 해결하는 데 도움이 되기를 바랍니다.
위 내용은 PHP ajax가 중국어 왜곡 문자를 전송하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!