-3

我将页面编码设置为utf8,甚至在元标记中设置为utf8.

但是,当我从数据库中获取一个值时,它会放置一个带问号的钻石——我假设不知道这个字符。

字符是é。如果我做一个回声é;它在页面上正常显示。另外,如果我用 html 手动编写它。但是,当我使用 PDO 从数据库调用中获取相同的值时,我得到一个 ...</p>

我假设它是一个 PDO 设置。我试过了:

$db->exec("SET NAMES 'utf8';");

但这并不能解决它。

有什么建议么?

4

1 回答 1

2

许多事情可能会在途中出错。通常您需要使用 utf-8 对源文件进行编码,并使用 utf-8 打开数据库连接并将数据库表定义为 utf-8。

@deceze 的一篇很棒的文章帮助我澄清了事情是http://kunststube.net/frontback/

您可以尝试的最明显的事情是:

  1. 使用 utf8 编码保存您的源文件。此选项存在于 Notepad++ 或 Crimpson Editor 等编辑器中。
  2. 使用 utf8 选项创建 PDO 连接:

    $connection = new PDO('mysql:host='.$this->host.';dbname='.$this->db_name.';charset=utf8', $this->user, $this->pass,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

  3. 确保您的表格是 utf-8 编码的,并且您的表格具有以下选项:

    <form action="action.php" accept-charset="utf-8">

更新:也许 utf8_encode 解决了您的问题,但是从 PHP 到数据库并返回的某个地方存在错误的转换。或错误的文件编码。您应该解决问题的根源,并且不再需要 utf8_encode。

于 2013-07-12T21:57:40.060 回答