localeCompare 在不同的 Node.js 版本中产生不同的结果

问题描述 投票:0回答:1

localeCompare 在不同的 Node.js 版本中产生不同的结果,我正在尝试找出发生这种情况的确切原因。

具体来说,节点 12.22.12 与 13.0.0

$ nvm use 12.22.12
Welcome to Node.js v12.22.12.
Type ".help" for more information.
> "topic".localeCompare("топик", "ru")
-1

$ nvm use 13.0.0
Welcome to Node.js v13.0.0.
Type ".help" for more information.
> "topic".localeCompare("топик", "ru")
1

在 12 和 13 的 Nodejs changelogs 中没有找到任何内容

我唯一能找到的可能是 7.6 版本上 v8 引擎的变化,但是,当我在节点 12.17.0 控制台中检查 v8 版本时,我得到:

> console.log(process.versions.v8)
7.8.279.23-node.37

高于7.6,所以不可能是v8的改变。

那么,是什么导致 Node 12.22.12 和 Node 13.0.0 在运行时产生不同的结果

"topic".localeCompare("топик", "ru")

注意:在 Mac 上本地运行这些,但在我们的 Linux CI 中看到相同的结果

javascript node.js internationalization v8 ecmascript-intl
1个回答
0
投票

localeCompare
通常由 ICU 处理,因此节点中的 ICU 更新将是需要注意的相关更改。也许来自 13.0 的这个

• 构建:
◦ Node.js 版本现在构建了默认的完整 icu 支持。这意味着 ICU 支持的所有语言环境现在都包含在内,并且与 Intl 相关的 API 可能返回与以前不同的值 (Richard Lau) #29887

但这只是一个猜测。

© www.soinside.com 2019 - 2024. All rights reserved.