2013-05-10 44 views
0

我在MySQL运行以下命令:搜索希腊字符也返回拉丁字符

SELECT id, action FROM table1 WHERE action in ('α','δ','μ','Α','Δ','Μ') 

注意的字符是希腊和也,我使用UTF-8无处不在。 为什么此查询还返回行='a'或'A'(拉丁)的行?

这是整个脚本:

$query = "SELECT id, action FROM table1 WHERE action in ('α','δ','μ','Α','Δ','Μ') ORDER BY id ASC"; 
    $result = mysql_query($query) or die(mysql_error()); 
    $row = mysql_fetch_assoc($result); 
    $totalRows_result = mysql_num_rows($result); 

    if($totalRows_result > 0) { 
     do { 
      $str = $row['action']; 
      $greek = array('α','δ','μ','Α','Δ','Μ'); 
      $latin = array('A','D','M','A','D','M'); 
      $validstr = str_replace($greek, $latin, $str); 

      $q = "UPDATE table1 SET action='$validstr' WHERE id='".$row['id']."'"; 
      $res = mysql_query($q) or die(mysql_error());   
     } while ($row = mysql_fetch_assoc($result)); 
    } 

回答

0

尝试以下操作:

你连接到MySQL后,执行该查询,以确保您使用的是UTF8:

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET 'utf8'"); 

或看看这对你有帮助

<?php header("Content-type: text/html; charset=utf-8"); ?> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

你可以试试这个

<?php 
$link1 = mysql_connect('localhost','user1','pass1',TRUE); 
mysql_selectdb('db1',$link1); 
mysql_set_charset('utf8',$link1); 
?> 
+0

我做这个已经 – bikey77 2013-05-10 15:40:02

+1

使用'mysql_set_charset'..but更好地利用'PDO'或'mysqli' – bitWorking 2013-05-10 15:40:36

+0

@redreggae好的建议 – Yogus 2013-05-10 15:52:05

0

使用mysql_set_charset('utf8');