1.乱码截图:
2.php文件
<?php
header("Content-type:text/json;charset=utf8");
//定义参数
//表单验证
if(empty($id)){
//连接数据库
$con = mysql_connect("localhost","root","root");
//设置数据库字符集
mysql_query("SET NAMES UTF8");
//查询数据库
mysql_select_db("mysql", $con);
$result = mysql_query("SELECT * FROM lyj WHERE id between 0 and 100");
$results = array();
while($row = mysql_fetch_assoc($result))
{
$results[] = $row;
// 将数组转成json格式
echo json_encode($results);
}
//关闭数据库连接
mysql_close($con);
}else{
echo "[{\"result\":\"表单为空...\"}]";
}
?>
3.错误原因:PHP的json_encode处理中文的时候, 中文会被编码, 变成不可读的, 类似”\u***”的格式
4.解决方法:
方法一: 使用JSON_UNESCAPED_UNICODE参数
echo json_encode( '打开播报' ); // "\u6253\u5f00\u64ad\u62a5"
echo json_encode( '打开播报', JSON_UNESCAPED_UNICODE ); // "打开播报"
方法二:先把汉字urlencode转码、再json_encode; 然后urldecode解码
echo $cmd = '打开播报'; // 打开播报
echo $cmd = urlencode( $cmd ); // "%E6%89%93%E5%BC%80%E6%92%AD%E6%8A%A5"
echo $cmd = json_encode( $cmd ); // "%E6%89%93%E5%BC%80%E6%92%AD%E6%8A%A5"
echo $cmd = urldecode( $cmd ); // "打开播报"
5.修改后的php文件:
<?php
header("Content-type:text/json;charset=utf8");
//定义参数
//表单验证
if(empty($id)){
//连接数据库
$con = mysql_connect("localhost","root","root");
//设置数据库字符集
mysql_query("SET NAMES UTF8");
//查询数据库
mysql_select_db("mysql", $con);
$result = mysql_query("SELECT * FROM lyj WHERE id between 0 and 100");
$results = array();
while($row = mysql_fetch_assoc($result))
{
$results[] = $row;
// 将数组转成json格式
echo json_encode($results, JSON_UNESCAPED_UNICODE);
}
//关闭数据库连接
mysql_close($con);
}else{
echo "[{\"result\":\"表单为空...\"}]";
}
?>