0

我有以下字符集问题。

  1. 通过表单用户添加名称信息(像åäö这样的字符很常见) - 到目前为止没问题
  2. Mysqli 将名称添加到数据库 - 到目前为止没问题
  3. 在数据库中像åäö这样的字符显示为例如ö - 问题
  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;
                }
4

2 回答 2

0

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

mysql_set_charset("utf8");
于 2013-03-29T13:02:24.930 回答
0

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

$db = Db::factory($this->type, $this->creds);
$db->adapter()->exec("SET names 'UTF8'");
于 2013-03-29T15:44:34.653 回答