我一直知道WordPress使用utf8_general_ci
作为表排序规则,但最近它一直在安装utf8mb4_unicode_520_ci
.
我所做的是:
从WordPress下载WordPress。组织重命名wp-config-example.php
到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\', \'utf8_general_ci\');
正确设置数据库配置,并使用如上所述的字符集和排序规则创建空数据库。
打开mysite。提取WordPress并运行WordPress安装的dev所有内容都已正确安装,现在查看我的数据库设置和BOOM,表中有字符集utf8mb4
和排序规则utf8mb4_unicode_520_ci
. 旁注:我稍后安装的一些插件将具有表排序规则utf8\\U general\\U ci运行mysql --version
在我的机器上返回:
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
注意:如果我使用默认值
DB_COLLATE
和
DB_CHARSET
(省略我的定义),表得到
utf8mb4_unicode_520_ci
, 现在看来这是默认值。
那么,我如何告诉WordPress使用正确的编码创建表呢?
提前谢谢。
SO网友:Paul G.
您在这里只有一个选项,按照大多数标准,这是不建议的。您必须编辑核心WordPress文件:wp-db.php
原因是没有过滤器来更改这些,代码有点硬编码。WordPress检查它选择的排序规则的可用性。如果您只需要它来设置站点,而不再需要它,那么修改临时文件就可以了。请注意,一旦WordPress更新,此代码可能会被替换。
步骤:
打开文件/wp-includes/wp-db.php
要进行编辑,请找到调用的函数determine_charset()
. 在WordPress 4.8.1中,它位于第773行,创建函数的第一行return compact( \'charset\', \'collate\' );
保存文件函数如下所示:
public function determine_charset( $charset, $collate ) {
return compact( \'charset\', \'collate\' );
不要删除任何内容,只需在函数定义下面添加1行即可。
此外,这假设您在WP配置中指定了自定义字符集和排序