2013-03-29 102 views
0

我有以下字符集問題。字符集數據庫

  1. 通過表單添加用戶名信息(字符像AAO是常見的) - 迄今爲止沒有問題
  2. 的mysqli添加名稱數據庫 - 迄今爲止沒有問題
  3. 在數據庫字符像AAO顯示爲例如¶ - 問題
  4. 當抓住包含ö的名稱信息並將它們呈現在頁面上時,它們顯示正確,就像åäö。

但是,我不認爲它看起來不錯,有像數據庫中的字符。

我的字符集問題在哪裏?我的數據庫整理是utf8_swedish_ci,類型MyISAM。

編輯,我的代碼:

try {    
        // Create DB object 
        $db = Db::factory($this->type, $this->creds); 

        // Create a prepared statement 
        $sql = new Sql($db, 'user'); 
        // This doesnt work $sql->("SET NAMES 'utf8'"); 

        $sql->insert(array('firstname' => '?', 'surname' => '?', 'email' => '?', 'password' => '?')); 

        // Prepare the statement, bind the parameters and execute 
        $db->adapter()->prepare($sql); 
        $db->adapter()->bindParams(array('firstname' => $post['firstname'], 'surname' => $post['surname'], 
                'email' => $post['email'], 'password' => $encryptedPassword)); 
        $db->adapter()->execute(); 

        $this->sendUserData($post['email'], $password); 

       } catch (\Exception $e) { 
        echo $e->getMessage() . PHP_EOL . PHP_EOL; 
       } 
+1

所以,你需要讓你的網頁UTF-8太..什麼字符集是他們在? – Nelson

+0

是的,該文件是在Unicode(UTF-8)格式,我有這在我的標籤:「' – Robert

回答

0

你可能需要連接的排序設置爲UTF-8,這是ISO-8859-1默認。嘗試

mysql_set_charset("utf8"); 
+0

然後出現下一個問題。我使用一個框架(www.popphp.org)使用準備好的語句,所以我不知道如何設置字符集。已將我的代碼添加到原始帖子中。 – Robert

0

框架不允許傳遞選項PDO所以你必須做這樣的事情:

$db = Db::factory($this->type, $this->creds); 
$db->adapter()->exec("SET names 'UTF8'"); 
相關問題