服务器返回中文乱码问题
服务器端是用php写的,直接显示在浏览器中文是乱码,android接收中文也是乱码,数据库编码,数据库表,字段,数据库连接,apache服务器编码都是utf-8,
这是在浏览器看到的结果:content字段在数据库中是中文
{"posts":[{"post":{"ID":"1","Account_ID":"A220","Receiver_ID":"B220","Consumption_Amount":"100","Content":"\u9910\u5385\u6d88\u8d39","Time":"2013-08-20"}},{"post":{"ID":"3","Account_ID":"A220","Receiver_ID":"B221","Consumption_Amount":"10","Content":"\u516c\u4ea4\u8f66\u6d88\u8d39","Time":"2013-08-21"}},{"post":{"ID":"4","Account_ID":"A220","Receiver_ID":"B222","Consumption_Amount":"500","Content":"\u8d2d\u7269\u6d88\u8d39","Time":"2013-08-22"}},{"post":{"ID":"5","Account_ID":"A220","Receiver_ID":"B223","Consumption_Amount":"50","Content":"\u516c\u4ea4\u8f66\u6d88\u8d39","Time":"2013-08-08"}},{"post":{"ID":"6","Account_ID":"A220","Receiver_ID":"B224","Consumption_Amount":"100","Content":"\u624b\u673a\u5145\u503c","Time":"2013-08-10"}},{"post":{"ID":"7","Account_ID":"A220","Receiver_ID":"B225","Consumption_Amount":"1000","Content":"\u8f6c\u8d26","Time":"2013-08-06"}}]}
服务器端代码:
header("Content-Type: text/html; charset=UTF-8");
$format = 'json'; //xml is the default
/* 连接数据库*/
$link = mysql_connect('localhost','root','199209') or die('Cannot connect to the DB');
// mysql_query("SET NAMES UTF8");
mysql_select_db('citi_db',$link) or die('Cannot select the DB');
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8");
$query = "SELECT * FROM `consumption_detail` WHERE `Account_ID` = 'A220'";
$result = mysql_query($query,$link) or die('Errant query: '.$query);
$posts = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
$posts[] = array('post'=>$post);
}
}
/* json格式*/
if($format == 'json') {
header("Content-type: text/html;charset=UTF-8");
echo json_encode(array('posts'=>$posts));
}