배경 : 내 시스템의 일부는 json_encode로 전달하기 전에 utf8_encode를 사용하여 HTML 코드를 utf8 형식으로 변환합니다.utf8 문자가 포함 된 PHP utf8_encode
문제점 : 시스템에 UTF8 문자 (중국어)를 입력 할 때까지 아무 문제가 없었습니다. 언급 한 UTF8 문자가 두 번 인코딩되어 깨져서 나왔습니다.
사이드 노트 : 지금까지 캐릭터 세트 인코딩 및 기타 등등의 경험이 없습니다. 아마도 데이터베이스와 연결이 이미 utf8로 설정되어 있기 때문에 json_encode 전에 utf8_encode를 사용할 필요가 없을 것입니다. html 코드에 중국어 문자가 없으면 mb_detect_encoding은 ASCII (ISO-8859-1이 아님)를 반환합니다. 하지만 null을 반환하지 않고 json_encode를 통과 할 수 없었습니다 ... 따라서 지금까지 작동 한 utf_8 인코딩을 사용합니다.
업데이트 : 마지막으로 html 코드를 문자열로 typecasting하여이 문제를 해결했습니다. via (string) $ html; json_encode()에 할당하기 전에.
최종 솔루션을 이끌어 낸 모든 사람들 덕분에.
@ x4rf41 사용 된 데이터에 UTF-8 인코딩 문자가 포함 된 경우입니다. 그렇지 않으면 ISO-8859-1 인코딩 인 것 같습니다. 아마 당신은'mb_convert_encoding()'] (http://www.php.net/manual/en/function.mb-convert-encoding.php)와'mb_detect_encoding()'을 시도하고 싶을 것입니다. – Lukas
'$ json = json_encode ($ data, JSON_UNESCAPED_UNICODE); 시도 했습니까? – HamZa
죄송합니다, php5.3을 사용합니다. – ephemeron