|
|
1
31
印刷品:
这个
|
|
|
2
8
有关这一问题的最新情况:
|
|
|
3
6
最终,由于Huppie发现了一个明显的PHP错误,如果不使用··建议的重新编码字符串(UTF-8 Windows-1252或ISO-8859-1),这个问题就无法以简单的方式解决。
结果是:
相同的代码段在Linux机器上工作,不会产生任何问题,可以生成以下输出:
我提交了一份关于 bugs.php.net : Bug #46165 strcoll() does not work with UTF-8 strings on Windows -我不认为这个错误是正确的 假的 ;-).
|
|
|
4
4
这是一个非常复杂的问题 issue ,因为UTF-8编码的数据可以包含任何Unicode字符(即来自许多8位编码的字符,这些编码在不同的地区具有不同的排序)。 如果您将UTF-8数据转换为Unicode(对不起,不熟悉PHP Unicode函数),然后将其规范化为 NFD or NFKD 然后,对代码点进行排序可能会提供一些对您有意义的排序规则(即“%”之前的“A”)。 检查我提供的链接。 编辑:由于您提到您的输入数据是清晰的(我假设它们都属于“windows-1252”代码页),那么您应该执行以下转换:UTF-8 Unicode windows-1252,windows-1252编码的数据在其上选择“CP1252”区域设置进行排序。 |
|
|
5
1
found this following helper function
在那之后,一个简单的
|
|
|
6
0
在我的windows开发机器上,使用代码页1252的示例非常有效。
剪 这是在PHP5.2.6中实现的。顺便提一下 错误的
Ungetüme Ãpfel 2147483647 Ungetüme Birnen 2147483647 Ungetüme Apfel 2147483647 Ungetüme Ungetiere 2147483647 Ãsterreich Ungetüme 2147483647 Ãpfel Ungetiere 2147483647 Ãpfel Birnen 2147483647 Apfel Ãpfel 2147483647 Ungetiere Birnen 2147483647 bug reports 被标记为 bogus ... 我想你最好的办法就是提交一份bug报告。。。 |
|
|
7
0
我在德语“Umlaute”中也遇到了同样的问题。经过一些研究,这对我来说很有效:
结果是:
|
|
8
-1
您的排序规则需要与字符集匹配。因为数据是UTF-8编码的,所以应该使用UTF-8排序规则。在不同的平台上,它的命名可能会有所不同,但一个好的猜测是
|