phpのjson_encodeデータ

WBOY
WBOYオリジナル
2016-08-08 09:20:241221ブラウズ
json_encode() 出力データのみ认识UTF-8、すべて出力データ時、注意データ编码格式!です これに対処するための 間違った

関数。まず ANSI から UTF-8 に適切に変換する必要があります。これにより、 のような Unicode エスケープ シーケンスの数が確かに減ります。 json 出力ですが、技術的にはこれらのシーケンスは json に対して有効なので、心配する必要はありません。

PHP で ANSI から UTF-8 に変換

utf8_encode() 機能します エンコード付き 文字列のみu0082。有効な

を正常に作成する必要がある場合 エンコードされたものから 文字列を再エンコード/に変換する必要があります。 そうすれば 文書に従って作業するだけです。json_encodeUTF-8エンコーディングを変換するには (詳細 正しくは、 がエンコードされていると思います 文字列。人気がありますが、誤って json と呼ばれます) ANSIあなたへ mb_convert_encoding() function:UTF-8json_encode$str = mb_convert_encoding($str,"UTF-8","Windows-1252");PHP の別の関数文字列のエンコード/文字セットの変換は、アイコンベース onlibiconv。同様に使用することもできます:$str = iconv("CP1252","UTF-8", $str);ANSI utf8_encode() に関する注意点Windows-1252utf8_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 までご連絡ください。