-4

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

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

4

4 回答 4

3

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

mysql_set_charset('utf8');

对于 mysqli

$mysqli->set_charset('utf8');

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

$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
于 2013-08-09T11:49:25.393 回答
0

在 php 文件的第一行使用

 header('Content-Type: text/html; charset=utf-8');
于 2013-08-09T10:55:05.403 回答
0

您必须为数据库连接设置字符集。出于这个原因,您可以使用 mysql_set_charset 函数。

mysql_set_charset('utf8',$link1); 

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

于 2013-08-09T10:45:36.707 回答
0

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

SET NAMES encoding;

即对于utf8,它将是:

SET NAMES utf8;

您只需在连接到数据库后执行此操作,并且每次连接执行一次。

于 2013-08-09T10:43:25.290 回答