我正在使用WordPress>=3.8。wp config中的默认字符集/排序规则值。php是
define(\'DB_CHARSET\', \'utf8\');
define(\'DB_COLLATE\', \'\'); // Becomes utf8_general_ci
我现在的处境是
utf8_general_ci
足够了,但更具体一些(
utf8_danish_ci
) 将始终能够更好地描述我的数据。同样,从外部源获取的数据总是UTF-8。
我正在开发一个插件来创建一些表
CREATE TABLE plugin_table(
some_id INT NOT NULL,
some_data VARCHAR(100) NOT NULL,
PRIMARY KEY (some_id)
) ENGINE=InnoDB;
处理字符集和/或排序规则的正确方法是什么?
一种解决方案是使用上面的语句,然后使用全局配置。如前所述,这将在我的情况下起作用,从开发人员的角度来看,我认为要求utf8
或utf8mb4
已指定。
另一种解决方案是显式设置字符集/排序规则设置:
...) ENGINE=InnoDB [DEFAULT CHARSET=utf8] [COLLATE utf8_danish_ci];
这将允许我以最合适的方式为需要存储的数据配置表,在测试中,我已确认
Å
, 其处理方式不同
utf8_general_ci
和
utf8_danish_ci
, 比较正确。这似乎有效,但我不知道这是好的还是坏的做法,特别是,我不知道这是否会在其他地方引起并发症(例如,我应该在查询表格时更改设置吗?)。
这个问题有几个表兄弟,但这似乎不是重复的。The answer that comes closest 还提到了上面的显式方法,并评论说使用默认值可能更合适,“这样用户可以在有充分理由的情况下覆盖它们”。
如果我打算不遗余力地使用核心配置,那么首先指定这些设置似乎很愚蠢。
重要的是要理解,使用非UTF-8永远不会有“好的理由”。关于排序,这个问题不太清楚。
问题可以归结为以下几个方面:考虑到一些非UTF-8核心配置,这将被认为是不受支持的,我应该采取措施使我的插件正常运行吗?