MySQL输出的Unicode字符编码


Unicode characters encoding for a MySQL output

我正试图从一个排序规则为"utf8_general_ci"的表中检索数据,而标题为"app_name"的列具有类似于以下字符串的字符串:Plants vs.Zombies™2.포코팡对于Kakao,네이버 -Naver,µTorrent®-Torrent应用程序。当我试图查询下表时:

   <?php
   $con = mysql_connect('localhost', 'root', 'root') or die('Error connecting to server');
   mysql_select_db('googleappanalysis', $con); 
  if(isset($_POST['appType']))
  {
    $appType = $_POST['appType'];
    $month = $_POST['month'];
    $year = $_POST['year'];
  }

  $monthYear = $month.$year; 
  mysql_query("SET NAMES utf8")
  if($appType == "Apps with IA" ){
    $sql="SELECT app_name  FROM MonthlyAppState WHERE is86 = 1 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'";
    $result=mysql_query($sql);
   }elseif($appType == "Apps with no IA" ){
    $sql="SELECT app_name  FROM MonthlyAppState WHERE is86 = 0 AND is86 IS NOT NULL AND monthYear = '".$monthYear."'";
    $result=mysql_query($sql);
   }

    $table = array();
    $table['cols'] = array(
array('label' => $appType, 'type' => 'string')
 );

 $rows = array();
 $appendingString = "";
 while($r = mysql_fetch_assoc($result)){
    $temp = array();
$temp[] = array('v' => (string)$r['app_name']);
$rows[] = array('c' => $temp);
    $appendingString = $appendingString."/".$r['app_name'];
 }
 $myFile = "logfile.txt";  
 $fh = fopen($myFile, 'w') or die("can't open file"); 
 fwrite($fh, $appendingString);
 fclose($fh);
 $table['rows'] = $rows;
 // encode the table as JSON
 $jsonTable = json_encode($table);
  // set up header; first two prevent IE from caching queries
 header('Cache-Control: no-cache, must-revalidate');
 header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
 header('Content-type: application/json');
 echo $jsonTable;
 ?>

jsontable抛出null值,并且对于文件'logfile.txt',unicode字符被转换为'??'如图所示

使用

mysql_set_charset('utf8', $con);

mysql_connect之后设置客户端字符集。

参考文献:

  • http://php.net/manual/en/function.mysql-set-charset.php