字符集有問題。即時通訊插入俄羅斯信件表中的值時,它看起來像這樣 - Р?ван。字符集,俄語字母的問題
這是我的數據庫連接類。
class Database {
public $user = 'root';
public $password = '';
function __construct() {
$this->connect();
}
function connect() {
try {
$this->dbh = new PDO('mysql:host=localhost;dbname=university', $this->user, $this->password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES CP1251'));
$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();
}
}
是的,我知道,我沒有準備好發言,虐待後,我解決了這個問題。正如你在db連接中看到的,我寫了array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES CP1251')
。它修復了從db顯示值的問題(它以相同的方式顯示)。我的SQL是這樣的:
$q = $this->db->insertQuery("INSERT INTO students (id,first_name,second_name,last_name,course) VALUES ('','Иван','Иванян','Иванович','1')");
在表其顯示這樣的 - Рванян 我的所有文件都設置UTF-8無BOM?這裏有什麼不對?
編輯:另外,在表中的所有行是utf8_general_ci,因爲你不使用準備好的語句正確
那麼你發送給數據庫的數據是什麼編碼? – deceze
從5.3.6開始,charset是DSN的一部分..同樣,爲什麼你會用模擬的準備?我強烈建議您參考[本教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。哦,你的'Database'類正在泄漏封裝。然後,我仍然不明白爲什麼人們試圖爲PDO製作如此神奇的包裝。 –
特雷斯科,我不確定你在說什麼。 – user3005741