带重音字符的SQLite排序列

带重音字符的SQLite排序列,sqlite,Sqlite,我正在用PHP开发一个使用SQLite数据库的网站。我正在运行Windows(dev),我的生产环境应该是*nix平台。以下是我的表的架构: CREATE TABLE [animals]( [id] INTEGER NOT NULL UNIQUE, [name] VARCHAR(50) NOT NULL ); 我想按名称对动物进行排序(包含重音字符)。我的SQL查询是: SELECT * FROM animals ORDER BY name DESC 我得到: élépha

我正在用PHP开发一个使用SQLite数据库的网站。我正在运行Windows(dev),我的生产环境应该是*nix平台。以下是我的表的架构:

CREATE TABLE [animals](
    [id] INTEGER NOT NULL UNIQUE, 
    [name] VARCHAR(50) NOT NULL
);
我想按
名称
动物进行排序(包含重音字符)。我的SQL查询是:

SELECT * FROM animals ORDER BY name DESC
我得到:

éléphant
tigre
renard
chien
而不是

tigre
renard
éléphant
chien
我在网上搜索过。我试过了

SELECT * FROM animals ORDER BY name COLLATE *binary|nocase|rtrim* DESC
但我也有同样的问题。我也试过,

SELECT * FROM animals ORDER BY name COLLATE *localized|unicode* DESC
但是我得到了一个错误(要么我的SQLite客户端崩溃,要么PHP返回以下错误:
没有这样的排序顺序:UNICODE

Android似乎有一个解决方案,但我运行的是Windows,我的生产环境应该是*nix平台


我如何才能让我的动物按正确的方式排序?

默认情况下,SQLite只有ASCII排序规则

可以使用ICU扩展来获得Unicode支持,但PHP没有启用此功能


但是您可以在PHP中创建和实现比较。

有没有办法将ICU二进制文件用作SQLite扩展?我目前正在尝试使用icu4c-58_2-Win64-MSVC2015.zip包中的Windows DLL,但没有成功。。。有帮助吗?请查看如何使用重音字符对进行正确排序。它适用于基于Debian的系统,但我想,通过将
libicu.so
name更改为
libicu.dll
,它很容易适应Windows。