> 백엔드 개발 > PHP 문제 > PHP Ajax에서 잘못된 값 문제를 해결하는 방법

PHP Ajax에서 잘못된 값 문제를 해결하는 방법

藏色散人
풀어 주다: 2023-03-05 15:04:01
원래의
2580명이 탐색했습니다.

PHP ajax의 잘못된 값에 대한 해결 방법: 1. 앞 페이지와 뒷 페이지 및 데이터베이스에 UTF8 인코딩을 사용합니다. 2. 데이터베이스에 저장할 때 "mysql_query("set names gb2312");" 메서드를 사용합니다. ICONV 함수는 데이터베이스에서 검색된 문자열의 인코딩을 변환합니다.

PHP Ajax에서 잘못된 값 문제를 해결하는 방법

추천: "PHP Video Tutorial"

PHP 웹사이트 개발에서 사용자 경험을 높이기 위해 Ajax는 자주 사용되는 기술이지만, 초보자의 경우 Ajax가 자주 접하게 되는 한자가 깨져 나오는 문제 PHP AJAX에 의해 전달될 때 문자열이 전달될 때 중국어 문자가 왜곡되는 문제를 해결할 수 있는 방법이 있습니까?

Ajax 기술은 JavaScript에서 발전한 것으로 알고 있으며, JavaScript는 UTF-8 인코딩을 사용합니다. 현재 백그라운드 페이지에서 GBK 또는 기타 인코딩을 사용하고 인코딩 변환을 수행하지 않으면 한자가 깨지는 문제가 발생합니다.

PHP Ajax 값 전송에서 한자가 깨졌을 때 해결 방법

방법 1. 앞 페이지와 뒷 페이지 및 데이터베이스는 UTF8 인코딩을 균일하게 사용합니다.

 방법 2: 웹 사이트가 GBK/GB2312와 같은 인코딩을 채택한 경우 두 가지 상황이 있습니다:

 1. Ajax가 한자를 보내고 PHP(백그라운드 프로그램)가 잘못된 문자를 수신하면 GBK와 UTF8 간의 변환 기능을 사용하여 수신된 문자열은 인코딩된 후 해당 데이터베이스에 저장됩니다. 데이터베이스에서 사용하는 인코딩은 GBK 또는 GB2312라고 가정합니다. 구성된 PHP 운영 환경이 ICONV 기능을 지원하는 경우 ICONV 기능을 사용하여 인코딩 변환을 수행할 수도 있습니다.

mysql_query("set names gb2312");
로그인 후 복사

는 Ajax 값 전송의 중국어 왜곡 문제를 해결할 수 있습니다.

  2. PHP가 한자를 보내고 Ajax(첫 페이지)가 잘못된 문자를 받을 때 ICONV 함수를 사용하여 데이터베이스에서 가져온 문자열의 인코딩을 변환한 다음 해당 값을 Ajax 프런트 데스크에 전달할 수도 있습니다. is, responseText입니다. 아니면 PHP(백엔드 프로그램) 출력 문자 스트림 앞에

header('Content-type: text/html;charset=gb2312');
로그인 후 복사

를 추가하세요. 특별 지적 사항: Ajax를 사용하여 다단계 연결(예: 성-도시 연결)을 수행하는 경우 XML 대화형 형식을 사용하고 XML을 출력하기 전에 헤더도 추가해야 합니다.

 동시에 GB2312 및 UTF8 변환 기능이 게시되어 모든 사람이 Ajax 중국어 문자 깨짐 문제에 직면할 때 다른 해결책을 찾을 수 있습니다.

function gb2utf8($gb,$filename)
{
    if(!trim($gb))
    return $gb;
    //$filename="gb2312.txt";
    $tmp=file($filename);
    $codetable=array();
    while(list($key,$value)=each($tmp))
    $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
    $utf8="";
    while($gb)
    {
        if (ord(substr($gb,0,1))>127)
        {
            $thisgb=substr($gb,0,2);
            $gb=substr($gb,2,strlen($gb));
            $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080]));
        }
        else
        {
            $gb=substr($gb,1,strlen($gb));
            $utf8.=u2utf8(substr($gb,0,1));
        }
    }
    $ret="";
    for($i=0;$i<strlen($utf8);$i+=3)
    $ret.=chr(substr($utf8,$i,3));
    return $ret;
}
function u2utf8($c)
{
    for($i=0;$i<count($c);$i++)
    $str="";
    if ($c < 0x80) {
        $str.=$c;
    }
    else if ($c < 0x800) {
        $str.=(0xC0 $c>>6);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x10000) {
        $str.=(0xE0 $c>>12);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    else if ($c < 0x200000) {
        $str.=(0xF0 $c>>18);
        $str.=(0x80 $c>>12 & 0x3F);
        $str.=(0x80 $c>>6 & 0x3F);
        $str.=(0x80 $c & 0x3F);
    }
    return $str;
}
로그인 후 복사

참고: 이 기능을 사용하려면 GB2312 중국어 인코딩 테이블이 필요합니다. 다운로드하려면 여기를 클릭하세요. gb2312가 사용되므로 변환 중에 일부 희귀 단어가 깨질 수 있습니다.

위 내용은 PHP Ajax에서 잘못된 값 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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