我想使用 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"));
并且不起作用:(
在提交表单之后,在插入数据库之前,我回显了这些值,我得到了阿拉伯字符,这意味着我的问题出在数据库中,但是回显可以在不使用元数据的情况下工作
当我尝试从 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);
关于php - 阿拉伯字符的 PDO 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665145/