PHP가 잘못된 json 데이터를 얻은 경우 어떻게 해야 할까요?

PHPz
풀어 주다: 2023-04-19 09:45:39
원래의
1167명이 탐색했습니다.

인터넷 기술의 발달로 웹사이트와 모바일 애플리케이션의 개발이 해마다 호황을 누리고 있으며, 그 속에서 데이터 상호작용이 중요한 부분이 되었습니다. JSON(JavaScript Object Notation, JavaScript Object Notation)은 가독성, 유연성 및 확장성의 장점으로 인해 프런트엔드 및 백엔드 상호 작용 프로세스에서 가장 널리 사용되는 데이터 형식 중 하나가 되었습니다. PHP에서 JSON 데이터를 얻을 때 잘못된 문자가 나타날 수 있습니다. 이 기사에서는 PHP에서 왜곡된 JSON 데이터를 얻는 솔루션을 소개합니다.

  1. UTF-8 인코딩

UTF-8 인코딩은 현재 인터넷에서 가장 널리 사용되는 문자 인코딩 방식으로 대부분의 언어에서 텍스트 표현을 지원합니다. PHP에는 해당 문자 인코딩 함수도 있습니다. 예를 들어 mb_convert_encoding() 함수는 문자열을 지정된 인코딩으로 변환할 수 있습니다. 외부에서 JSON 데이터를 가져와서 PHP 객체로 변환하려면 먼저 해당 콘텐츠를 UTF-8 인코딩으로 변환해야 합니다.

다음은 JSON 데이터를 가져오는 샘플 코드입니다.

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data);
로그인 후 복사

이 코드에서는 file_get_contents() 함수를 사용하여 원격 JSON 파일의 내용을 가져와 $json_data 변수에 저장합니다. 그런 다음 json_decode() 함수를 사용하여 JSON 데이터를 PHP 객체로 변환합니다. 그러나 JSON 데이터에 UTF-8이 아닌 인코딩 문자가 포함되어 있으면 변환 프로세스 중에 문자가 깨질 수 있습니다. 데이터를 얻기 전에 다음과 같이 인코딩 형식을 지정할 수 있습니다.

$json_data = file_get_contents('http://example.com/data.json');
$json_data = mb_convert_encoding($json_data, 'UTF-8');
$decoded_data = json_decode($json_data);
로그인 후 복사

코드의 두 번째 줄에서는 mb_convert_encoding() 함수를 호출하여 데이터를 UTF-8 인코딩으로 변환합니다. 이러한 방식으로 PHP 객체로 변환할 때 일관성 없는 인코딩으로 인해 발생하는 문자 왜곡을 방지할 수 있습니다.

  1. HTTP 헤더 설정

PHP에서 얻은 잘못된 JSON 데이터 문제를 해결하는 또 다른 방법은 HTTP 헤더 콘텐츠를 설정하여 문자 인코딩 형식을 지정하는 것입니다. Content-Type, Content-Disposition 등을 포함한 HTTP 헤더 정보를 설정하려면 header() 함수를 사용하십시오. Content-Type 필드는 HTTP 메시지 본문의 유형을 지정하는 데 사용되며 해당 값 형식은 JSON 데이터 전송 프로세스 중에 "application/json"으로 설정되어야 합니다. 동시에 Content-Type에 다음과 같은 문자 인코딩 지침도 추가해야 합니다.

header('Content-Type: application/json; charset=utf-8');
로그인 후 복사

이렇게 하면 서버에서 JSON 데이터를 얻을 때 잘못된 문자 없이 HTTP 헤더 정보를 기반으로 인코딩이 자동으로 변환됩니다. .

  1. JSON_UNESCAPED_UNICODE 옵션 사용

JSON_UNESCAPED_UNICODE 옵션은 PHP 5.4.0 이상에서 사용할 수 있습니다. JSON 데이터 변환 시 유니코드 문자를 이스케이프하지 않는 옵션입니다. JSON에서는 ASCII가 아닌 문자를 유니코드로 인코딩해야 하기 때문에 데이터가 장황해지고 읽기 어려워집니다. JSON_UNESCAPED_UNICODE 옵션을 사용하면 이 문제를 피할 수 있습니다. 샘플 코드는 다음과 같습니다.

$json_data = file_get_contents('http://example.com/data.json');
$decoded_data = json_decode($json_data, false, 512, JSON_UNESCAPED_UNICODE);
로그인 후 복사

코드의 세 번째 줄에서는 json_decode() 함수에 JSON_UNESCAPED_UNICODE 옵션을 전달하여 변환 프로세스 중에 유니코드 문자가 이스케이프되지 않음을 나타냅니다.

요약

JSON은 강력한 가독성과 높은 유연성이라는 장점을 지닌 경량 데이터 교환 형식으로, 웹사이트와 모바일 애플리케이션의 데이터 상호작용 프로세스에 널리 사용됩니다. 그러나 PHP에서 JSON 데이터를 얻을 때 잘못된 문자가 나타날 수 있습니다. 이 문제는 문자 인코딩 변환, HTTP 헤더 정보 설정, JSON_UNESCAPED_UNICODE 옵션 사용 등 다양한 방법으로 해결할 수 있습니다. 궁극적인 목표는 JSON 데이터를 정확하고 완벽하게 PHP 객체로 변환하여 프런트엔드와 백엔드 데이터 상호 작용의 정확성과 안정성을 보장하는 것입니다.

위 내용은 PHP가 잘못된 json 데이터를 얻은 경우 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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