2013-11-23 80 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