我在WP数据库中安装了一个Wordpress安装和一个名为c_schools的自定义表。在我的自定义模板页面中,我执行以下查询:
$schools = $wpdb->get_results("SELECT school_id, school_name FROM c_schools ORDER BY school_id");
然后将结果写为HTML列表。
学校名称包含捷克符号,例如ě,š,但未正确显示。
整个数据库(包括自定义表)的编码是utf8,整理是utf8_general_ci。
当我通过putty会话在终端的mysql应用程序中运行查询时,所有字符都显示正常。
页面的其余部分显示正常,包括菜单中页面的名称,其中也包含这些符号,并且(我相信)是从同一个数据库加载的。
通过firebug检查响应头时,我发现了以下内容类型:
Content-Type text/html; charset=UTF-8
所以在服务器端的PHP脚本中似乎确实是错误,也许wpdb配置不正确?
我做错了什么?
我使用了this SO page上的建议,并验证了数据库,表格和列的编码都是utf8。
我在wp-config.php中找到了以下几行,看起来是正确的。
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
以下元标记出现在页面的头部。
<meta charset="UTF-8" />