服务器端是用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));    }  
  else {  
    header('Content-type: text/xml');  
    echo '<posts>';  
    foreach($posts as $index => $post) {  
      if(is_array($post)) {  
        foreach($post as $key => $value) {  
          echo '<',$key,'>';  
          if(is_array($value)) {  
            foreach($value as $tag => $val) {  
              echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';  
            }  
          }  
          echo '</',$key,'>';  
        }  
      }  
    }  
    echo '</posts>';  
  }  
 ?>   
 </html>

解决方案 »

  1.   

    数据库:apache:求大神指点!
      

  2.   

    我在notepad++里面设置为utf8了,可还是不行……
      

  3.   

    看上去都是正常的, json_encode编码的话, 中文是会编码成那样的, 显示应该是正常的。我很多应用都是这样的。
      

  4.   

    json都这样,用\uxxxx表示unicode字符,正常
      

  5.   

    因为你使用了 json_encode   数据变成了json格式...   需要json_decode恢复
      

  6.   

    汗。没仔细看你的正文,真以为是乱码呢。。其实不是,不过是json_encode之后的结果。