Question

I have a huge database with a lot of languages stored in. All data stored in utf8_unicode_ci and my database collation is utf8_unicode_ci and I use special php page to call the sql data this is my code:

<?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
?> 

The problem is all special characters in mysql are not shown in html in browser or show null I wnat to know is there any thing I miss it here? how to show those character on my page

Was it helpful?

Solution

Try using SET NAMES utf8 after connecting to MySQL:

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

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

As the manual says:

SET NAMES indicates what character set the client will use to send SQL statements to the server... It also specifies the character set that the server should use for sending results back to the client.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top