>  기사  >  백엔드 개발  >  PHP에서 json_encode 중국어 인코딩 문제

PHP에서 json_encode 중국어 인코딩 문제

怪我咯
怪我咯원래의
2017-07-13 10:06:121840검색

실제 응용프로그램에서 한자가 있는 경우, json_encode() function을 직접 사용하면 한자가 "u***" 형태로 인코딩됩니다. 이 문제는 php5.4부터 해결되었습니다. , 다음 방법을 사용하여 중국어 문자가 인코딩되는 문제를 해결하려면 json_encode("중국어", JSON_UNESCAPED_UNICODE)

예: 'Xu'는 json_encode 처리 후 'u80e5'가 되고 최종 json의 중국어 부분은 다음으로 대체됩니다. 유니코드 인코딩. 우리가 해결해야 할 것은 object를 json으로 변환하고 객체 내부의 중국어가 json에서 여전히 일반 중국어로 나타나는지 확인하는 것입니다. 이제 json_encode를 사용하는 것만으로는 목표를 달성할 수 없는 것 같습니다.
내 솔루션: 먼저 클래스의 중국어 필드를 URL 인코딩(urlencode)한 다음 객체를 json 인코딩(jsonencode)하고 마지막으로 json, 즉 최종 json을 url 디코드(urldecode)합니다. 내부의 중국어는 여전히 동일한 중국어입니다. !
테스트 코드는 다음과 같습니다.

<?php 
class myClass { 
public $item1 = 1; 
public $item2 = &#39;中文&#39;; 
function to_json() { 
//url编码,避免json_encode将中文转为unicode 
$this->item2 = urlencode($this->item2); 
$str_json = json_encode($this); 
//url解码,转完json后将各属性返回,确保对象属性不变 
$this->item2 = urldecode($this->item2); 
return urldecode($str_json); 
} 
} 
$c = new myClass(); 
echo json_encode($c); 
echo &#39;<br/>&#39;; 
echo $c->to_json(); 
echo &#39;<br/>&#39;; 
echo json_encode($c); 
echo &#39;<br/>&#39;; 
echo json_encode(&#39;胥&#39;); 
?>

프로그램 출력 결과:

{"item1":1,"item2":"\u4e2d\u6587"} 
{"item1":1,"item2":"中文"} 
{"item1":1,"item2":"\u4e2d\u6587"} 
"\u80e5"

위 내용은 PHP에서 json_encode 중국어 인코딩 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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