>  기사  >  백엔드 개발  >  PHP JSON format_php 팁의 중국어 표시 문제 해결 방법

PHP JSON format_php 팁의 중국어 표시 문제 해결 방법

WBOY
WBOY원래의
2016-05-16 20:17:471257검색

중국어로 표시된 json 데이터 반환 문제

이전 글에서는 json 형식으로 반환된 중국어가 u5723u8bdeu8282u5343u4e07u597du793cu5927u5949u9001로 표시됩니다

해결책 1:

코드 복사 코드는 다음과 같습니다.

함수 공지(){
'./include/conn.php' 포함; //데이터베이스 링크 파일
$sql_notice = mysql_query('SELECT * FROM gg_notice where 활성화 = "1" 제한 0,10');
$notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC);
$str = json_encode($notice);
//리눅스
return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\1')) ", $str);
//창
//preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\1' 반환) ))", $str);
 
}
?>

인터넷에서 검색한 다른 방법

코드 복사 코드는 다음과 같습니다.

/**
* json 생성, 분석은 중국어 지원
​*/
클래스 Json_Helper {
/**
* json 생성
​​*/
공개 정적 함수 인코딩($str){
          $json = json_encode($str);
           //리눅스
return preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\1')) ", $json);
            //창
//preg_replace("#\u([0-9a-f]{4})#ie", "iconv('UCS-2LE', 'UTF-8', pack('H4', '\1' 반환) ))", $json);
}

/**
* json 분석
​​*/
공개 정적 함수 디코드($str) {
          return json_decode($str);
}
}
?>

인터넷 검색으로 찾은 또 다른 관련 글입니다

PHP와 함께 제공되는 json_encode를 사용하여 데이터를 인코딩하면 중국어 문자가 유니코드로 변환되어 읽을 수 없게 됩니다. 예를 들어 문자열 "Xiamen"을 json_encoding하면 출력은 "u53a6u95e8"입니다.

확인 후 두 가지 방법이 있습니다.
1. "u53a6u95e8"을 "Xiamen"으로 복원하고 다음 코드를 사용합니다.

코드 복사 코드는 다음과 같습니다.

$str= preg_replace("#\u([0-9a-f] )#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))" , $str);

2. 먼저 중국어 필드를 urlencode 및 json_encode한 다음 urldecode를 사용하여 중국어를 표시합니다.

코드 복사 코드는 다음과 같습니다.

$code = urldecode(json_encode(urlencode("샤먼")));

PHP 버전 5.4에는 Json에 JSON_UNESCAPED_UNICODE라는 새로운 옵션이 추가되었습니다. 이 옵션을 추가하면 중국어가 자동으로 인코딩되지 않습니다.

코드 복사 코드는 다음과 같습니다.

echo json_encode("샤먼", JSON_UNESCAPED_UNICODE);

게다가 json_encode와 json_decode는 UTF-8로 인코딩된 문자만 지원하므로 GBK 문자를 JSON으로 변환해야 합니다. 제가 작성한 GBK에서 UTF-8로의 변환 코드를 첨부합니다.
코드 복사 코드는 다음과 같습니다.

/*
​ GBK 문자열 트랜스코딩은 UTF-8로 변환되고, 숫자는 숫자로 변환됩니다.
*/
함수 ct2($s){
If(is_numeric($s)) {
          반환 간격($s);
} 그 밖의 {
         return iconv("GBK","UTF-8",$s);
}
}
/*
일괄 처리 gbk->utf-8
*/
함수 icon_to_utf8($s) {

if(is_array($s)) {
foreach($s as $key => $val) {
$s[$key] = icon_to_utf8($val);
}
} 그 밖의 {
        $s = ct2($s);
}
$s 반환;

}

echo json_encode(icon_to_utf8("샤먼"));

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