0

mySQL データベース テーブルにいくつかのヨーロッパ文字があります。私の JSON コードは、それらに対して null オブジェクトを返します。また、ヘッダーと utf8 エンコードを定義しましたが、結果は null です。コードスニペットをここに添付しました

ヘッダ:

header("Content-Type: text/javascript; charset=utf-8");

JSON エンコーディング

while ( $aRow = mysql_fetch_array( $rResult ) )
{
    $row = array();
    for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( $aColumns[$i] == "version" )
        {
            /* Special output formatting for 'version' column */
            $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
        }
        else if ( $aColumns[$i] != ' ' )
        {
            /* General output */
            $row[] = $aRow[ $aColumns[$i] ];
        }
    }
    $output['aaData'][] = $row;
}

echo utf8_encode(json_encode( $output ));

JSON の結果、firebug が発生します。

{"sEcho":1,"iTotalRecords":"190458","iTotalDisplayRecords":"4","aaData":[["University of Toronto ","Canada","72","17","41","144","7","16","6"],["The University of British Columbia ","Canada","71","22","44","176","11","16","7"],["University of Calgary","Canada","65","31","45","145","11","15","6"],[null,"Canada","63","18","45","125","12","26","6"]]}

ここで、JSON の結果では、大学の名前がヨーロッパ文字であるため、大学の名前の 1 つのフィールドが null になっています。

4

1 に答える 1

0

最後に、これを変更して答えを修正します

        $row[] = $aRow[ $aColumns[$i] ];

の中へ

    $row[] = utf8_encode($aRow[ $aColumns[$i] ]);

返された出力全体を utf-8 にエンコードすると、文字がデータテーブルに表示されるようになりました。それが誰かに役立つことを願っています。

于 2013-02-07T05:14:47.573 に答える