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 utf8连接 MySQL 后尝试使用:

$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 回答