2013-11-23 38 views
0

我正在使用mysql。当我做简单的查询SELECT * FROM table它返回РђР»РμРєСЃРμРμРІРёС‡。它应该显示俄文字母。我的数据库,表,列都设置为utf8_general_ci。 php文件是utf8,没有bom。当我查询设置名称cp1251,它解决了问题,但为什么有cp1251,如果所有的东西都在utf 8?mysql中的无效字符集

数据库连接

class Database { 

    public $user = 'root'; 
    public $password = ''; 

    function __construct() { 
     $this->connect(); 
    } 
    function connect() { 
     try { 
      $this->dbh = new PDO('mysql:host=localhost;dbname=university;charset=utf8', $this->user, $this->password); 
      $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     } catch(PDOException $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
      } 
    } 

    function selectQuery($sql) { 
     $this->stmt = $this->dbh->prepare($sql); 
     $this->stmt->execute(); 
    } 

    function insertQuery($sql) { 
     $this->stmt = $this->dbh->prepare($sql); 
     $this->stmt->execute(); 
    } 
} 

查询

$this->db = new Database(); 
$q = $this->db->selectQuery('SELECT * FROM students'); 
$data = $this->db->stmt->fetchAll($q); 
+0

我很高兴你在最后一个问题后改为PDO :) – SamV

+0

-1两次询问相同的问题 –

回答

-1

使用您的设定的排序规则手动连接之后,该查询。

$PDO = new PDO('mysql:host = localhost; dbname = dbname', $username, $pswd); 
$PDO -> exec("SET SESSION collation_connection = 'utf8_persian_ci';"); 
$PDO -> exec("SET CHARACTER SET 'utf8';"); 
$PDO -> exec("set names utf8"); 

我设置此行波斯,你必须设置第二行utf8_persian_ci您的语言...
我有同样的问题与波斯帮我,希望能对你有所帮助太..

+0

@ user3005741我忘了写最后一行,它必须是代码的重要部分... $ PDO-> exec(“set names utf8”); 对不起,现在试试这个... – Kiyarash