阿拉伯字符的PDO数据库


PDO database for arabic characters

我想使用 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"));

并且不起作用:(

提交表单后,在插入数据库之前,我回显了值,我得到了阿拉伯字符,这意味着我的问题在数据库中,但 echo 在不使用 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">放在标题中

在与数据库建立连接时,尝试将连接设置为 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);

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

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

请改用define('DB_CHARSET', 'UTF8');