我想使用带有php的pdo将阿拉伯字符插入数据库,但我在数据库中获得了这些字符
الجامع ا
当我使用
时<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
最后我找到了解决方案,它是:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
放入标题答案 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');
代替