Character encoding 字符集数据库

Character encoding 字符集数据库,character-encoding,collation,Character Encoding,Collation,我有下面的字符集问题 通过表单用户添加姓名信息(像åäö这样的字符很常见)——到目前为止没有问题 Mysqli将该名称添加到数据库中-到目前为止没有问题 在数据库中,像åäö这样的字符显示为egÃ∗-problem 当抓取包含Ãääääää的名称信息并将其显示在页面上时,它们会正确显示,如åäää 但是,我不认为在数据库中有像è这样的字符看起来很好 我的字符集问题在哪里?我的数据库排序规则是utf8_swedish_ci,键入MyISAM 编辑,我的代码: try {

我有下面的字符集问题

  • 通过表单用户添加姓名信息(像åäö这样的字符很常见)——到目前为止没有问题
  • Mysqli将该名称添加到数据库中-到目前为止没有问题
  • 在数据库中,像åäö这样的字符显示为egÃ∗-problem
  • 当抓取包含Ãääääää的名称信息并将其显示在页面上时,它们会正确显示,如åäää 但是,我不认为在数据库中有像è这样的字符看起来很好

    我的字符集问题在哪里?我的数据库排序规则是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;
                    }
    

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

    mysql_set_charset("utf8");
    

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

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

    所以,你需要让你的网页UTF-8太。。它们是什么字符集?是的,文档是用Unicode(UTF-8)格式化的,我的-tag中有这个:
    ,然后出现了下一个问题。我使用的是一个框架(www.popphp.org),它使用的是预先准备好的语句,所以我不知道如何将charset设置为它。已将我的代码添加到原始帖子中。