上面的是我数据库存的数据,采用的utf8_bin编码,开始的时候用的是utf8_unicode_ci,可是还是不行
下面是我的PHP代码
<?php
header('Content-Type:application/json;charset=utf-8');
//定义常量参数
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','root');//密码
define('DB_NAME','Test');
$connect = mysql_connect(
DB_HOST,
DB_USER,
DB_PWD
)or die('数据库连接失败:'.mysql_error());
mysql_select_db(DB_NAME,$connect) or die('数据库连接错误,错误信息:'.mysql_error());
//从数据库里把表的数据提出来(获取记录集)
$query = "SELECT * FROM gc_DataBase";
$result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error());
class User {
public $id ;
public $name ;
public $address;
public $phonenumber;
}
$data =array();
while ($row= mysql_fetch_array($result, MYSQL_ASSOC)){
$user = new User();
$user -> id = $row["id"];
$user -> name = $row["name"];
$user -> address = $row["address"];
$user -> phonenumber = $row["phonenumber"];
$data[] = $user;
}
if (function_exists('mysql_set_charset') === false) {
mysql_query("SET NAMES UTF8",$data);
}else{
mysql_set_charset('utf8',$data);
}
$response = array(
'code' => 200,
'message' => 'success for request',
'data' => $data,
);
echo urldecode(json_encode($response));
mysql_free_result($response); //释放
mysql_close();//关闭数据库
?>
最后在浏览器显示的是这个尿性
{
"code": 200,
"message": "success for request",
"data": [
{
"id": "100",
"name": "??",
"address": "????",
"phonenumber": "13212340001"
},
{
"id": "101",
"name": "??",
"address": "????",
"phonenumber": "13512340002"
},
{
"id": "100",
"name": "??",
"address": "????",
"phonenumber": "13212340001"
},
{
"id": "101",
"name": "??",
"address": "????",
"phonenumber": "13512340002"
},
{
"id": "0",
"name": "",
"address": "",
"phonenumber": "0"
},
{
"id": "103",
"name": "??",
"address": "????",
"phonenumber": "13512340005"
},
{
"id": "103",
"name": "??",
"address": "????",
"phonenumber": "13512340005"
}
]
}
为什么中文显示的是问号呢?我要的Unicode编码的就好了
这一段应该放在
mysql_query
之前,另外这两个地方的第二个参数也不应该是$data
,而应该是$connect