2

我想使用 pdo 和 php 将阿拉伯字符插入数据库,但我在数据库中得到了这些字符

الجامع &#1575

当我使用

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

结果是

   ??????????

我在 phpMyadmin 中收集列

utf8mb4_unicode_ci

和这个

utf_unicode_ci

但我仍然有同样的错误。

我试着像这样建立联系:(totti,totti 不是我真正的用户名和密码)

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8"', 'totti', 'totti');

但我仍然得到同样的错误

我也试过这样:

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8', 'totti', 'totti'
                ,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

并且不起作用:(

在提交表单之后,在插入数据库之前,我回显了这些值并且我得到了阿拉伯字符,这意味着我的问题出在数据库中,但是回显只是在不使用 meta 的情况下工作

当我尝试从 phpmyadmin 插入阿拉伯字符时,它可以工作

我在用

phpmyadmin in XAMPP 1.7.4
php 5.5.3

最后我找到了解决方案,它是:

  1. 收集 utf8_unicode_ci 列
  2. 放入<meta http-equiv="Content-Type" content="text/html; charset=utf-8">标题
4

3 回答 3

3

在连接到数据库时尝试将连接设置为 utf-8。

  • 如果您遵循规则和最佳实践:

首先在配置文件中设置常量,如下所示:

define('DB_SERVER', 'your_hostname');
define('DB_USERNAME', 'your_username');
define('DB_PASSWORD', 'your_password');
define('DB_CHARSET', 'UTF-8');
define('DB_DATABASE', 'your_dbname');
define('PDO_DSN', 'mysql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE . ';charset=' . DB_CHARSET);

然后像这样设置你的连接:

$_dbhandler = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"));
  • 又快又脏

像这样设置你的连接:

$dbhandler = new PDO('mysql:host=your_hostname;dbname=your_dbname;charset=UTF-8', $user, $pass);
于 2012-11-20T00:49:30.347 回答
2

Your problem is most likely not in how you access the database. The characters you see are HTML encoded, so it looks like you're using something like htmlentities() on your data before writing it to the DB.

于 2012-05-19T12:53:49.443 回答
1

define('DB_CHARSET', 'UTF-8');不工作

define('DB_CHARSET', 'UTF8');改为使用

于 2015-10-16T21:27:17.690 回答