0

多くの言語が格納された巨大なデータベースがあります。すべてのデータは utf8_unicode_ci に格納され、データベースの照合順序は utf8_unicode_ci であり、特別な php ページを使用して SQL データを呼び出します。これは私のコードです。

<?php
header('Content-Type: text/html; charset=utf-8');
$date=$_POST['date'];//I get this information from ajax request
$server_root = "./";
if(file_exists("{$server_root}include-sql/mysql.class.php"))
{
    include_once("{$server_root}include-sql/mysql.class.php");
}
include_once("{$server_root}config.php");//database connection information
$db1;
$db1 = new db_mysql($conf['db_hostname'], $conf['db_username'], $conf['db_password'], $conf['db_name']);
$sql = $db1->query("select * from matches where match_date='$date'");
$i=0;
while($sql_results = $db1->fetch_array($sql))
{
    $match[$i]['tournament_id'] = $sql_results['tournament_id'];
    $match[$i]['id'] = $sql_results['id'];
    $match[$i]['match_id'] = $sql_results['match_id'];
    $match[$i]['match_date'] = $sql_results['match_date'];
    $match[$i]['match_time'] = $sql_results['match_time'];
    $match[$i]['match_status'] = $sql_results['match_status'];
    $match[$i]['match_venue'] = $sql_results['match_venue'];
    $match[$i]['venue_id'] = $sql_results['venue_id'];
    $match[$i]['static_id'] = $sql_results['static_id'];
    $match[$i]['match_week'] = $sql_results['match_week'];
    $match[$i]['localteam_name'] = $sql_results['localteam_name'];
    $match[$i]['localteam_score'] = $sql_results['localteam_score'];
    $match[$i]['localteam_ft_score'] = $sql_results['localteam_ft_score'];
    $match[$i]['localteam_et_score'] = $sql_results['localteam_et_score'];
    $match[$i]['localteam_pen_score'] = $sql_results['localteam_pen_score'];
    $match[$i]['localteam_id'] = $sql_results['localteam_id'];
    $match[$i]['visitorteam_name'] = $sql_results['visitorteam_name'];
    $match[$i]['visitorteam_score'] = $sql_results['visitorteam_score'];
    $match[$i]['visitorteam_ft_score'] = $sql_results['visitorteam_ft_score'];
    $match[$i]['visitorteam_et_score'] = $sql_results['visitorteam_et_score'];
    $match[$i]['visitorteam_pen_score'] = $sql_results['visitorteam_pen_score'];
    $match[$i]['visitorteam_id'] = $sql_results['visitorteam_id'];
    $match[$i]['halftime_score'] = $sql_results['halftime_score'];
    $match[$i]['stage_id'] = $sql_results['stage_id'];
    $i++;
}
echo json_encode($match);//return json to my ajax function
?> 

問題は、mysql のすべての特殊文字がブラウザの html に表示されないか、null が表示されることです。それらのキャラクターをマイページに表示する方法

4

1 に答える 1

0

SET NAMES utf8MySQL に接続してから使用してみてください。

$db1 = new db_mysql($conf['db_hostname'], $conf['db_username'], 
    $conf['db_password'], $conf['db_name']);

$db1->query("SET NAMES utf8");

マニュアルが言うように:

SET NAMES は、クライアントが SQL ステートメントをサーバーに送信するために使用する文字セットを示します...また、サーバーがクライアントに結果を返すために使用する文字セットも指定します。

于 2013-05-18T09:39:43.053 に答える