我想使用 pdo 和 php 将阿拉伯字符插入数据库,但我在数据库中得到了这些字符
الجامع ا
当我使用
<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
最后我找到了解决方案,它是:
- 使列的集合utf8_unicode_ci
- 将
<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');