Charset数据库

时间:2013-03-29 12:59:36

标签: character-encoding collation

我有以下charset问题。

  1. 通过表单用户添加名称信息(像åäö这样的字符很常见) - 到目前为止没有问题
  2. Mysqli将名称添加到数据库 - 到目前为止没有问题
  3. 在数据库中,像åäö这样的字符显示为例如ö - problem
  4. 当抓取包含¶的名称信息并在页面上显示它们时,它们就像åäö一样。
  5. 但是,我认为在数据库中使用像¶这样的字符看起来很不错。

    我的charset问题在哪里?我对数据库的整理是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;
                    }
    

2 个答案:

答案 0 :(得分:0)

您可能需要将连接的排序规则设置为UTF-8,默认情况下为iso-8859-1。尝试

mysql_set_charset("utf8");

答案 1 :(得分:0)

框架不允许将选项传递给PDO,因此您必须执行以下操作:

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