You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome最新版本中toLocaleTimeString()返回ASCII 226而非空格问题求助

Chrome 110+ 中 toLocaleTimeString() 空白字符异常问题

是的,已经有不少开发者遇到过这个问题。

Chrome 110及以上版本在使用toLocaleTimeString()格式化12小时制时间时,将秒数与AM/PM标记之间的普通空格(ASCII 32,U+0020)替换成了窄非断空格(Narrow No-Break Space,U+202F),对应的UTF-8编码就是你提到的226 128 175。Chrome团队做这个调整是为了让时间文本的排版更紧凑美观,符合现代UI的视觉规范,但这确实会导致依赖字符编码或空格分割的逻辑出现异常。

验证方法

你可以通过以下代码直接查看字符的编码值:

const formattedTime = new Date().toLocaleTimeString('en-US', { hour12: true });
// 取秒数和AM/PM之间的字符位置(假设格式为 hh:mm:ss AM/PM)
const spaceCharCode = formattedTime.charCodeAt(formattedTime.length - 3);
console.log(spaceCharCode); // Chrome 110+ 返回 8239(U+202F的十进制值),旧版本返回32

临时解决方案

如果你的业务逻辑依赖普通空格,可以通过正则替换统一处理:

const normalizedTime = formattedTime.replace(/\u202F/g, ' ');

目前ECMAScript的本地化API还没有提供直接控制这类空白字符的配置项,替换是最直接的兼容方式。

内容的提问来源于stack exchange,提问作者user1488803

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:31:05