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教程有兴趣的朋友有所帮助。