Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法输出西里尔ASCII编码_Php_Mysql - Fatal编程技术网

Php 无法输出西里尔ASCII编码

Php 无法输出西里尔ASCII编码,php,mysql,Php,Mysql,我有一个MySQL字段,它包含纯文本西里尔字符(例如,аааааПааа)。排序规则是utf8\u general\u ci 当我用MySQL查询取出这些内容并尝试用php输出时,我总是得到????符号。HTML编码是utf8,文档编码是utf8,mb\u detect\u encoding()为字符串显示ASCII,但没有任何PHP/MySQL转换函数将其转换为可读的内容。您很可能犯了一个非常常见的错误,没有设置连接编码。它通常在my.iniconfig文件中完成,但更好的方法是始终在代码中强

我有一个MySQL字段,它包含纯文本西里尔字符(例如,аааааПааа)。排序规则是
utf8\u general\u ci


当我用MySQL查询取出这些内容并尝试用php输出时,我总是得到????符号。HTML编码是utf8,文档编码是utf8,
mb\u detect\u encoding()
为字符串显示ASCII,但没有任何PHP/MySQL转换函数将其转换为可读的内容。

您很可能犯了一个非常常见的错误,没有设置连接编码。它通常在
my.ini
config文件中完成,但更好的方法是始终在代码中强制执行。为此,只需执行以下查询:

SET NAMES encoding;
i、 e.对于utf8,应为:

SET NAMES utf8;

您在连接到数据库后立即执行此操作,并在每次连接时执行一次。

您必须为数据库连接设置字符集。 因此,您可以使用mysql\u set\u charset函数

mysql_set_charset('utf8',$link1); 

更多信息:

在php文件的第一行中使用

 header('Content-Type: text/html; charset=utf-8');

对于过时的mysql驱动程序,它必须是

mysql_set_charset('utf8');
对于mysqli

$mysqli->set_charset('utf8');
对于PDO,您必须在DSN中设置编码:

$dsn = "mysql:host=localhost;dbname=test;charset=utf8";

还有一个问题。。。我真不敢相信,如果你知道该怎么看的话,你就不能用同样的答案从谷歌获得前200条搜索结果:)-1到这个,+1到另一个。另外,
utf8
是编码,而不是排序。哦,所以你否决了原本有效的答案,因为使用了错误的单词,而不是指出或更正?