Php utf8不适用于mysql

Php utf8不适用于mysql,php,mysql,unicode,utf-8,Php,Mysql,Unicode,Utf 8,当我回显阿拉伯字符时,它们看起来很好,但如果我从数据库回显它们,它们会显示为问号。以下是我迄今为止所做的工作,但它仍然不起作用: 字符集设置现在是: | Variable_name | Value | | character_set_client | utf8 | | character_set_connection | utf8 | |

当我回显阿拉伯字符时,它们看起来很好,但如果我从数据库回显它们,它们会显示为问号。以下是我迄今为止所做的工作,但它仍然不起作用:

字符集设置现在是:

| Variable_name            | Value                      |
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| Variable_name        | Value           |
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
现在的排序规则设置为:

| Variable_name            | Value                      |
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| Variable_name        | Value           |
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
在我使用的PHP代码中:

header('Content-Type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
mysql_query("set character_set_server='utf-8'");
mysql_query("set_names 'utf8'");
更多信息:

我从数据库中回显它们,它们显示为问号


你怎么回应他们?你要回显的对象的编码是什么?如果您要回显HTML,请确保HTML页面以UTF8格式解释。

可能重复我不知道您做了什么,但您没有运行集合名称UTF8;运行set_names'utf8'时请注意下划线。请注意,MySQL与其他所有人的语言不同。当MySQL说utf8时,它真的意味着UTF-8的一些奇怪的延迟变体,它被限制在三个字节之内,天知道是什么可笑的原因。如果你真的想要UTF-8,你应该告诉MySQL你想要这个MySQL喜欢称之为的奇怪的东西。@R.MartinhoFernandes哈哈哈,真是个好笑话。那个真有趣。你为什么那样看着我?哦那是。。。不是开玩笑吧?哦…@R.MartinhoFernandes当然是个笑话。当我提到MySQL时,我认为这是显而易见的。谢谢你的回复!是的,我只是在HTML标记中回显它们。类似于echo“”的东西$行['title']。'

/;该行不应该将其编码为utf8:header'Content-Type:text/html;字符集=utf-8';如果不是,我如何确保HTML被解释为UTF-8?同样在同一页中,我直接回显阿拉伯字符,它们看起来很好。您也可以添加,但我认为浏览器应该尊重内容类型字符集标题。您可以检查浏览器已应用的编码。对于Chrome,它的选项>工具>Encoding@MohamedGamalAbdalkaderheader/meta字符集不编码任何内容,它会宣布您正在使用的编码。因此,如果您宣布UTF-8,并看到问号,您的数据没有编码为UTF-8。我将数据库和代码转移到另一台服务器,一切正常!我猜mysql安装有问题!无论如何谢谢你的帮助!