use*_*803 6 javascript google-chrome
我们使用 Javascript 函数 toLocaleTimeString() 来解析日期/时间。最新版本的 Chrome 在秒和 AM/PM 部分之间突然返回 ASCII 226。Edge 没有任何问题,旧版本的 Chrome 也没有任何问题。110+ 有此问题,而 109 或更早版本则没有。
\n例如,如果返回的最后几个字符是:
\n00\xe2\x80\xafAM
\n其 ASCII 翻译为:
\n48 48 226 128 175
\n226 曾经是 32(空格)。
\n其他人也看到这种行为吗?
\n这显然是由这台V8 CL造成的
以下是此变更日志的摘要:
[intl] 增强日期解析器以采用 Unicode 空间
这是为 ICU72 的着陆做准备所需要的。允许在日期字符串中使用 U+202F,toLocaleString("en-US") 将使用 ICU72 生成该字符串。
所以这是故意这样做的,以支持下一版本的 ICU-72。因此,我们可以假设其他浏览器也会效仿。
由于此更改导致了太多网络兼容性问题,Chrome 确实针对此 ICU-72 更改修补了其 Intl 实现,并将这些 U+202F 字符转换回 U+2000 字符。显然,Firefox之前也做过同样的事情。
小智 3
我认为这是不间断的空间。
Non-break space
由于它也出现在 Edge110 上,我认为它源自 Chromium。
const event = new Date('August 19, 1975 23:15:30 GMT+00:00');
const localTime = event.toLocaleTimeString('en-US');
console.log(localTime);
console.log(localTime.indexOf(" "))
console.log(localTime.indexOf("\u{202F}"))
for (let i = 0; i < localTime.length; i++){
console.log(localTime.charCodeAt(i));
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |