在javascript中匹配mysql的utf8\u general\u ci排序顺序

xoshrz7s  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(533)

我想确保用javascript排序的数据顺序 sort 方法匹配mysql的 ORDER BY 条款。我在mysql中使用utf8\u general\u ci排序规则。
有什么想法吗?
更新:
比较我使用javascript时的差异 sort 不带比较函数的方法
mysql数据库:

javascript代码:

我的问题是:我需要一个适当的比较函数,我可以提供给 sort 方法,使其排序方式与 ORDER BY 在utf8\u general\u ci排序规则表上。

2mbi3lxu

2mbi3lxu1#

mysql中没有排序规则 acute-o 之前 A ,所以我认为这是不可能的。我认为javascript是“错误的”。
为了进一步讨论,请提供粘贴的文本,而不是图像。另外,尝试提供有问题的字符的十六进制数——来自javascript和mysql。

SELECT col, HEX(col), LENGTH(col), CHAR_LENGTH(col) FROM ...

并提供 SHOW CREATE TABLE 为了那张table。设置而不是排序规则可能有问题。
也许 吧
可能是javascript在盲目地比较“字节”,而不是“字符”。这就是为什么锐利-o(西欧字符)可以出现在波兰字符之前。另一个测试——在测试用例中添加几个非重音字符。你可能会发现,即使是急性o。
添加 lz 测试用例将决定 lz < ł ,适用于波兰语,但不是utf8\U general\U ci的工作方式。你应该考虑 utf8_polish_ci . 要演示斜杠-l:

console.log(letterSort('de', ['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó']));
console.log(letterSort('pl', ['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó']));
console.log(['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó'].sort());

> Array ["a", "ä", "l", "ł", "lz", "ó", "z", "z"]
> Array ["a", "ä", "l", "lz", "ł", "ó", "z", "z"]
> Array ["a", "l", "lz", "z", "z", "ä", "ó", "ł"]

在最后一种情况下,注意所有重音字符都在“z”之后。这可能相当于mysql的 COLLATION utf8_bin .

相关问题