-1

我有一个包含 utf8_unicode_ci 字符串的数据库。一些例子是“Zìzhìqū”和“Shěng”。

当我运行此代码时:

    $result = mysql_query ("SELECT foo FROM bar");

$rows = Array ();

while ($row = mysql_fetch_row ($result))
    array_push ($rows, $row [0]);

mysql_free_result ($result);

$rows数组包含预期的“Zìzhìqū”,但“Shěng”已变为“Sh?ng”。当我将字符串写入文件时,我可以看到流氓问号是一个普通的 ASCII 0x3f。

怎么回事?

我正在使用 PHP 5.3.10-1ubuntu3.4 和 mysql Ver 14.14 Distrib 5.5.24。知道是什么原因造成的吗?

4

3 回答 3

0

http://cameronyule.com/2008/07/configuring-mysql-to-use-utf-8/

于 2012-10-07T17:14:44.037 回答
0

您是否将PHP 和 MySQL 之间连接的字符编码设置为UTF-8?不这样做将导致?被替换为 UTF-8 字符。

SET NAMES 'utf8'
于 2012-10-07T17:15:33.147 回答
0

请将您的数据库保存在DEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci

然后

header("Content-type: text/html; charset=utf-8");
//mysql connection
mysql_query("SET NAMES utf8");
于 2012-10-07T17:25:05.257 回答