2017-04-05 17 views
0

我正在开发一个网站,使用SQLite数据库与PHP。我正在运行Windows(dev),我的生产环境应该是* nix平台。这里是我的表的模式:具有重音字符的SQLite订购列

CREATE TABLE [animals](
    [id] INTEGER NOT NULL UNIQUE, 
    [name] VARCHAR(50) NOT NULL 
); 

我想排序animals通过name(包含重音字符)。我的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返回以下错误:no such collation sequence: UNICODE)。

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

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

回答

1

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

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

但是你可以create your own collation并在PHP中实现比较。

+0

有没有办法使用ICU二进制作为SQLite扩展?我目前正在尝试使用包icu4c-58_2-Win64-MSVC2015.zip中的Windows DLL,但没有成功......帮助? –