日期:2014-05-17  浏览次数:20460 次

服务器返回中文乱码问题
服务器端是用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"}}]} 
服务器端代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<?php 
  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));  

  }