我在PHP中使用带有MySQL数据库的PDO库,但如果我插入以UTF-8编码的任何数据,如阿拉伯语单词,则将其插入到数据库中,但是?????????.
在我自己的框架中,在创建PDO连接后,我发送了两个查询 - SET NAMES utf8和SET CHARACTER SET utf8.它仍然无法正常工作.
例:
loadclass('PDO', array(
sprintf(
'mysql:host=%s;port=%s;dbname=%s',
confitem('database', 'host'),
confitem('database', 'port'),
confitem('database', 'name')
),
confitem('database', 'username'),
confitem('database', 'password'),
array('PDO::ATTR_PERSISTENT' => confitem('database', 'pconnect'))
));
$this->query('SET NAMES ' . confitem('database', 'charset'));
$this->query('SET CHARACTER SET ' . confitem('database', 'charset'));
Run Code Online (Sandbox Code Playgroud)
解决方法:使用json_encode函数在将数据插入数据库之前转换数据,并json_decode在获取后使用它进行解码.这就是我现在这样做的方式.
当从mysql数据库中提取数据时,符号 显示而不是£
有问题的字段整理为utf8_general_ci
我也有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />页面的head标签
有什么想法吗?
可能重复:
浏览器显示 而不是'
我有点卡在一个几乎只有html的php文件中.我只使用PHP将联系表单中的信息发送到我的邮件地址.
在localhost上开发网站时一切都很好.上传到我的服务器后,它会弄乱特殊字符.
我的meta标签看起来像这样:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我,我将非常感激.