我在名为 c_schools 的 WP 数据库中有一个 Wordpress 安装和一个自定义表。在我的自定义模板页面中,我执行以下查询:
$schools = $wpdb->get_results("SELECT school_id, school_name FROM c_schools ORDER BY school_id");
然后将结果写为 HTML 列表。
学校名称中包含捷克语符号,例如 ě、š,无法正确显示。
整个数据库(包括自定义表)的编码是utf8,排序规则是utf8_general_ci。
当我通过腻子会话在终端的 mysql 应用程序中运行查询时,所有字符都显示正常。
页面的其余部分显示正常,包括菜单中的页面名称,其中也包含这些符号,并且(我相信)是从同一个数据库加载的。
通过 firebug 检查响应标头时,我发现以下内容类型:
Content-Type text/html; charset=UTF-8
所以看起来真的是服务器端的PHP脚本出错了,可能是wpdb没有配置好?
我究竟做错了什么?
我使用了在这个 SO 页面上找到的建议,并验证了数据库、表和列的编码都是 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" />