用于阿拉伯字符的PDO数据库

时间:2012-05-19 12:23:32

标签: php database pdo phpmyadmin arabic

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

الجامع &#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"));

并且不起作用:(

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

当我试图从phpmyadmin IT WORKS

插入阿拉伯字符时

我正在使用

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">放入标题

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您的问题很可能不在于您如何访问数据库。您看到的字符是HTML编码的,因此在将数据写入数据库之前,您似乎正在使用htmlentities()之类的内容。

答案 2 :(得分:0)

  

define('DB_CHARSET', 'UTF-8');无效

使用define('DB_CHARSET', 'UTF8');代替