无法输出西里尔语ASCII编码

时间:2013-08-09 10:38:36

标签: php mysql

我有MySQL字段,其中包含纯文本西里尔字符(例如Широкаполяна)。整理是utf8_general_ci

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

4 个答案:

答案 0 :(得分:3)

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

mysql_set_charset('utf8');

for mysqli

$mysqli->set_charset('utf8');

对于PDO,您必须在DSN中设置编码:

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

答案 1 :(得分:0)

如果不设置连接编码,您很可能会犯很常见的错误。它通常在my.ini配置文件中完成,但恕我直言,更好的方法是始终在您的代码中强制执行此操作。为此,只需执行此查询:

SET NAMES encoding;

即。对于utf8,它将是:

SET NAMES utf8;

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

答案 2 :(得分:0)

您必须为数据库连接设置charset。 因此,您可以使用mysql_set_charset函数。

mysql_set_charset('utf8',$link1); 

更多信息:http://php.net/mysql_set_charset

答案 3 :(得分:0)

在php文件的第一行使用

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