Php 无法输出西里尔ASCII编码
我有一个MySQL字段,它包含纯文本西里尔字符(例如,аааааПааа)。排序规则是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文件中完成,但更好的方法是始终在代码中强
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
是编码,而不是排序。哦,所以你否决了原本有效的答案,因为使用了错误的单词,而不是指出或更正?