실제 응용프로그램에서 한자가 있는 경우, 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 = '中文'; 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 '<br/>'; echo $c->to_json(); echo '<br/>'; echo json_encode($c); echo '<br/>'; echo json_encode('胥'); ?>
프로그램 출력 결과:
{"item1":1,"item2":"\u4e2d\u6587"} {"item1":1,"item2":"中文"} {"item1":1,"item2":"\u4e2d\u6587"} "\u80e5"
위 내용은 PHP에서 json_encode 중국어 인코딩 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!