>  기사  >  백엔드 개발  >  PHP 애플리케이션 ajax가 잘못된 문자를 반환하면 어떻게 해야 합니까?

PHP 애플리케이션 ajax가 잘못된 문자를 반환하면 어떻게 해야 합니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-11 14:49:571970검색

php 애플리케이션 ajax에서 반환된 잘못된 코드에 대한 해결 방법: 1. 수신된 데이터를 다시 GBK로 변환합니다. 코드는 [iconv(utf-8,'gb2312'$_POST[Data])]입니다. 2. JSON Pass를 사용합니다. 코드는 [$json_string=JSON($data)]입니다.

PHP 애플리케이션 ajax가 잘못된 문자를 반환하면 어떻게 해야 합니까?

잘못된 문자를 반환하는 PHP 애플리케이션 Ajax에 대한 솔루션:

1 프런트엔드 JS에서 백엔드로 데이터를 제출하는 경우

AJAX 데이터가 기본 xmlHttprequest를 직접 사용하는지 여부 또는 jQuery의 ajax를 사용하여 데이터를 전송할 때 Ajax는 전송하기 전에 utf-8을 사용합니다!

우리 페이지가 UTF-8이면 문제가 없습니다! GB2312라면, 문제가 발생합니다. !GBK가 UTF-8로 변환되어 백엔드로 전송됩니다. 이때 백엔드에서 직접 수신한 내용이 깨집니다.

해결 방법

: 백엔드 언어가 PHP

iconv('utf-8','gb2312',$_POST['Data']);

원칙은 매우 간단합니다.

백엔드 직접 수신은 utf-8이고 페이지는 모두 GBK입니다. 그런 다음 수신된 데이터를 다시 GBK로 변환하면 됩니다. 이때 데이터베이스에 저장되는 작업만 수행하면 됩니다!

2. 배경 페이지는 데이터베이스의 데이터에 한자가 포함되어 있음을 확인한 다음 JS 프런트엔드로 다시 보냅니다.

PHP 페이지는 데이터베이스에서 일반 한자를 읽고 사용하려고 합니다. 다시 AJAX로 전달~

다시 전달하면 별도의 처리 없이 바로 문자열로 데이터를 전달하면 문제 없습니다!

하지만 우리는! 일반적으로 백그라운드 데이터를 패키징해야 합니다. 그렇지 않으면 프론트엔드에서 수신한 데이터를 처리하기가 어렵습니다.

PHP라면 이제 일반적으로 JSON을 사용하여 프론트엔드 JS로 전달됩니다! 압축을 풀고 조작하는 것은 매우 쉽습니다!

PHP 배경에서 json을 변환할 때 문제가 발생합니다. json을 변환할 때 데이터베이스에서 읽은 중국어가 NULL 또는 기타 비정상적인 상황으로 나타나는 것을 발견할 수 있습니다. 이는 JSON이 인코딩만 이스케이프하기 때문입니다! 걱정하지 마세요. 인코딩이 무엇을 의미하는지!

아무튼 JSON을 중국어로 변환하면 깨집니다~~

해결 방법은 다음과 같습니다.

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
 {
     static $recursive_counter = 0;
     if (++$recursive_counter > 1000) {
         die('possible deep recursion attack');
     }
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             arrayRecursive($array[$key], $function, $apply_to_keys_also);
         } else {
             $array[$key] = $function($value);
         }
   
         if ($apply_to_keys_also && is_string($key)) {
             $new_key = $function($key);
             if ($new_key != $key) {
                 $array[$new_key] = $array[$key];
                 unset($array[$key]);
             }
         }
     }
     $recursive_counter--;
 }
 function JSON($array) {
     arrayRecursive($array, 'urlencode', true);
     $json = json_encode($array);
     return urldecode($json);
 }
$json_string=JSON($data);
//$obj = json_decode($json_string);
print_r($json_string);

이러한 과정을 거치면 한자가 읽히는 것을 알 수 있습니다. 데이터베이스는 백그라운드로 PHP가 json 형식으로 성공적으로 변환되고 중국어로 모든 것이 정상임을 보여줍니다!

물론 이때 프런트로 수신되는 데이터는 JSON 형식이고 한자도 정상입니다!

관련 학습 권장사항:

PHP 프로그래밍 입문부터 숙련까지

위 내용은 PHP 애플리케이션 ajax가 잘못된 문자를 반환하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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