>  기사  >  백엔드 개발  >  PHP json_encode 데이터

PHP json_encode 데이터

WBOY
WBOY원래의
2016-08-08 09:20:241198검색
json_encode() 输ude数据只认识UTF-8,所有在输流数据时,注意数据编码格式!! 

解决方案:

ANSI로 인코딩된 문자열이 있는 경우 utf8_encode()을 사용하는 것은 다음과 같습니다. 이를 처리하는 잘못된 기능입니다. 먼저 ANSI에서 UTF-8로 올바르게 변환해야 합니다. 그러면 u0082와 같은 유니코드 이스케이프 시퀀스의 수가 확실히 줄어들 것입니다. json 출력이지만 기술적으로 이러한 시퀀스는 json에 유효하므로 두려워할 필요가 없습니다.

PHP를 사용하여 ANSI를 UTF-8로 변환json_encode이 작동합니다. UTF-8로 인코딩됨 문자열 . 유효한 json을 성공적으로 생성해야 하는 경우 ANSI 인코딩에서 문자열인 경우 먼저 UTF-8로 다시 인코딩/변환해야 합니다. 그러면 json_encode 문서에 나온 대로 작업하세요.ANSI에서 인코딩을 변환하려면(자세히 보기) 맞군요. Windows-1252가 인코딩되어 있다고 가정하겠습니다. 널리 사용되지만 ANSI이라고 잘못 언급되는 문자열) 당신에게 UTF-8 mb_convert_encoding() 함수를 사용할 수 있습니다.$str = mb_convert_encoding($str,"UTF-8","Windows-1252");문자열의 인코딩/문자 집합을 변환할 수 있는 PHP의 또 다른 함수는 iconv 기반이라고 합니다. onlibiconv. 이를 사용할 수도 있습니다:$str = iconv("CP1252","UTF-8", $str);utf8_encode()에 대한 참고 사항utf8_encode() does only work for Latin-1, not for ANSI. So you will destroy part of your characters inside that string when you run it through that function.Related: What is ANSI format?For a more fine-grained control of what json_encode() returns, see the list of predifined constants(PHP version dependent, incl. PHP 5.4, some constants remain undocumented and are available in the source code only so far).Changing the encoding of an array/iteratively (PDO comment)As you wrote in a comment that you have problems to apply the function onto an array, here is some code example. It's always needed to first change the encoding before using json_encode. That's just a standard array operation, for the simpler case of pdo::fetch() a foreach iteration:while($row = $q->fetch(PDO::FETCH_ASSOC)){foreach($row as&$value){ $value = mb_convert_encoding($value,"UTF-8","Windows-1252");} unset($value);# safety: remove reference $items[]= array_map('utf8_encode', $row );}

项目中遇到的问题,记录以备后用 .

文献:

json_encode() non utf-8 strings

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了php json_encode 数据,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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