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

フレームワークでは PDO にオプションを渡すことができないため、次のようにする必要があります。

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

おそらく、接続の照合順序を UTF-8 (デフォルトでは iso-8859-1) に設定する必要があります。試す

mysql_set_charset("utf8");
于 2013-03-29T13:02:24.930 に答える