用php实现MySQL数据库编码

用php实现MySQL数据库编码,php,mysql,encoding,utf-8,Php,Mysql,Encoding,Utf 8,我用utf8\U general\U ci对所有表和数据库进行编码,数据库中的所有数据都正常。 当我使用PHP(PDO)选择数据并在CLI中打印时(以及当我将这些数据保存到db中时),文本包含问号: Raw, zagra? te? rol? wiceprezydenta 为什么??怎么了? 我尝试了设置名称的解决方案,但不起作用。 我的部分代码: <?php setlocale(LC_ALL, 'pl_PL'); ini_set('default_charset','utf-8'); m

我用utf8\U general\U ci对所有表和数据库进行编码,数据库中的所有数据都正常。 当我使用PHP(PDO)选择数据并在CLI中打印时(以及当我将这些数据保存到db中时),文本包含问号:

Raw, zagra? te? rol? wiceprezydenta
为什么??怎么了? 我尝试了设置名称的解决方案,但不起作用。 我的部分代码:

<?php
setlocale(LC_ALL, 'pl_PL');
ini_set('default_charset','utf-8');
mb_internal_encoding("UTF-8");
putenv('LANG=pl_PL.UTF-8');
$db = new PDO('mysql:host=localhost;dbname=nameofdb;charset=utf-8','root','******', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
// body...

您的
$db
连接字符串中的字符集应该是
utf8
而不是
utf-8
,如下所示:

$db = new PDO('mysql:host=localhost;dbname=nameofdb;charset=utf8','root','****', 
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

您的CLI是否正确解释UTF-8…?是。问题是,当我从浏览器运行脚本时(当然,将header charset设置为utf8),您是否考虑了所有内容?谢谢,但不起作用,没有任何更改。