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