> 백엔드 개발 > PHP 문제 > PHP ajax가 중국어 왜곡 문자를 제출하는 경우 수행할 작업

PHP ajax가 중국어 왜곡 문자를 제출하는 경우 수행할 작업

藏色散人
풀어 주다: 2023-03-09 17:28:02
원래의
2064명이 탐색했습니다.

중국어 왜곡 문자의 PHP Ajax 제출에 대한 솔루션: 1. 데이터베이스 인코딩, PHP 인코딩 및 프런트 엔드 인코딩을 포함한 모든 데이터에 utf-8 인코딩을 사용합니다. 2. "JSON" 및 "arrayRecursive" 두 함수를 사용하여 인코딩합니다. 각 문자는 별도로 인코딩됩니다.

PHP ajax가 중국어 왜곡 문자를 제출하는 경우 수행할 작업

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터.

php는 ajax 중국어 왜곡 문제를 사용합니다

php에서는 데이터베이스에서 데이터를 추출한 후 일반적으로 프런트엔드 js가 ajax를 사용하여 백엔드인 php와 상호작용하는 경우 일반적으로 여러 행의 데이터를 추출합니다. 하나의 데이터만 에코할 수 있지만 여러 데이터가 있으므로 하나의 배열만 사용할 수 있습니다. json_encode() 함수는 데이터를 json 데이터로 변환하는 것을 의미합니다.

변환 방법을 살펴보겠습니다.

php 배열:

먼저 PHP에서 두 개의 새로운 배열을 만듭니다. 하나는 중국어를 포함하고 다른 하나는 숫자 또는 영어를 포함하고 최종 출력을 살펴봅니다. 아이디어: 연관된 값이 더 직관적입니다

$gg=array('a'=>'中国','b'=>'日本','c'=>'美国','d'=>'加拿大','e'=>'法国');
$yy=array('f'=>'6','g'=>'7','h'>='8','i'=>'tom','j'=>'kevin');
로그인 후 복사

배열 중 하나만 출력합니다:

echo $json=json_encode($gg);
로그인 후 복사

출력 결과는 다음과 같습니다

{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"}
로그인 후 복사

양쪽에 중괄호가 있고 문자가 깨졌습니다

두 개를 넣어주세요 하나의 배열에 배열을 동시에 넣고 동시에 출력

echo $json=json_encode(array($gg,$yy));
로그인 후 복사

Output 결과는 다음과 같습니다.

[{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"},{"f":"6","g":"7","0":true,"i":"tom","j":"kevin"}]
로그인 후 복사

배열의 배열을 json으로 포맷한 후 데이터가 []에 배치되는 것을 볼 수 있습니다. 대괄호 안에 있고 그 안의 배열은 {} 중괄호 안에 있지만 여전히 깨져 있습니다.

문자 깨짐 문제를 해결하려면 두 가지 방법이 있습니다.

방법 1: 데이터베이스 인코딩, PHP 인코딩 및 프런트 엔드 인코딩을 포함하여 모든 데이터는 UTF-8 인코딩을 사용합니다.

방법 2: 다음 두 가지 기능을 사용하여 각 문자를 개별적으로 인코딩합니다. (일부 기호는 성공적으로 이스케이프 처리되지 않은 것으로 보이므로 이 방법을 사용하지 않는 것이 좋습니다.)

function JSON($array) { 
    arrayRecursive($array, 'urlencode', true); 
    $json = json_encode($array); 
    return urldecode($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--; 
}
로그인 후 복사

                                                       이후 이 두 함수를 사용하면 출력 결과는 다음과 같습니다.

[{"a":"中国","b":"日本","c":"美国","d":"加拿大","e":"法国"},{"f":"6","g":"7","0":"1","i":"tom","j":"kevin"}]
로그인 후 복사
추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP ajax가 중국어 왜곡 문자를 제출하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿