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