非英文字符在我的php页面上显示为问号 - 在数据库中显得很好

时间:2010-08-25 15:37:15

标签: php mysql encoding

我有一个填充了非英语数据的MySQL数据库表。当我在Navicat MySQL浏览器中查看数据时,数据显示正常。但是,当我运行php脚本来选择并在网页上显示数据时,它会显示问号。页面编码设置为utf8甚至MySQL排序规则设置为utf8 - 在选择和显示时出现问题......请帮忙。

2 个答案:

答案 0 :(得分:6)

MySQL连接设置可能有问题。在运行任何其他SQL命令之前,从PHP连接到数据库时运行此MySQL命令:

SET names 'utf8';

这应该将连接的编码设置为UTF-8。正如您所说,页面和数据库已经是UTF-8(这也应该意味着页面发送Content-Type: text/html; charset=utf-8);默认情况下,连接本身可能会有不同的编码:(

答案 1 :(得分:3)

另外,在HTML中,我们必须写一下:

<meta charset="utf-8">

当我们创建MySQL数据库时,我们必须使用这样的东西:

CREATE DATABASE `base` DEFAULT CHARACTER SET=utf8;

创建表格时,请使用:

CREATE TABLE `base`.`table` (
`key` int(5) unsigned NOT NULL,
`name` varchar(100),
...
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在PHP代码中,在mysql_connect()和mysql_select_db()之后,使用:

mysql_query('SET NAMES UTF8');
相关问题