IE11与Chrome中Intl.NumberFormat阿拉伯语数字格式化差异问题
现象差异根因
- 不同浏览器对无地区后缀的语言代码
ar的默认实现规则不一致:- IE11对纯
ar默认绑定阿拉伯-印度数字体系作为格式化规则,因此运行代码会输出阿拉伯语写法的٩٩ - Chrome对纯
ar默认绑定拉丁数字体系作为默认配置,因此输出结果还是拉丁数字99
- IE11对纯
- 该差异来源于ECMA-402国际化规范未强制要求浏览器对不带地区的语言代码指定统一的地区 fallback 规则,属于不同浏览器厂商的实现差异
统一输出效果的解决方案
如果需要在所有浏览器中都得到阿拉伯语数字的格式化结果,可任选以下一种方案:
方案1:使用带地区标识的完整locale
指定使用默认采用阿拉伯-印度数字的地区locale即可,例如沙特阿拉伯地区的ar-SA:
Intl.NumberFormat('ar-SA').format(99)
方案2:显式指定数字体系参数
直接在配置项中声明使用的数字体系,不依赖地区的默认规则:
Intl.NumberFormat('ar', { numberingSystem: 'arab' }).format(99)
内容的提问来源于stack exchange,提问作者optimus
相关产品推荐
相关产品推荐

