我有MySQL字段,其中包含纯文本西里尔字符(例如Широкаполяна)。整理是utf8_general_ci
。
当我使用MySQL查询提取此内容并尝试使用php输出时,我总是得到????符号。 HTML编码为utf8,文档编码为utf8,mb_detect_encoding()
显示字符串的ASCII,但没有PHP / MySQL转换函数将其转换为可读的内容。
答案 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);
答案 3 :(得分:0)
在php文件的第一行使用
header('Content-Type: text/html; charset=utf-8');