使用JavaScript Date函数的IE charset编码问题

时间:2014-08-14 16:12:07

标签: javascript internet-explorer

当有人试图在使用" Locale"的日期函数上使用字符串函数时,有人可以解释为什么IE有错误吗?我认为它与角色的编码有关。

在IE和Chrome中检查jsFiddle,你会发现在Chrome中我们得到4(正确的索引)而在IE中我们得到8.这是否与ascii与unicode有关?如果是这样,这应该是IE中的错误吗?

var date = new Date();

var str = date.toLocaleTimeString();
jQuery('#a').text(str);

jQuery('#b').text(str.lastIndexOf(":"));

str = date.toTimeString();
jQuery('#c').text(str);
jQuery('#d').text(str.lastIndexOf(":"));

IE 11 jsFiddle输出的屏幕截图

Screen shot of IE 11 jsFiddle output

2 个答案:

答案 0 :(得分:1)

Here's a modified fiddle.无论出于何种原因,IE 11字符串中都嵌入了一堆额外的Unicode“从左到右标记”字符。

我添加的代码是

var s = '';
for (var i = 0; i < str.length; ++i)
    s  += str.charCodeAt(i) + ' ';
$('#c').text(s);

和其他<h4>一样。

Also see this other Stackoverflow question on the topic.

答案 1 :(得分:1)

根据定义,Date.toLocaleTimeString()根据用户的偏好/默认值生成输出。

因此,结果(:的位置)可能会因不同平台,区域设置甚至一天中的时间而异。

这就是韩国时间的例子:

"오후 12:00:00"

显然,在您的情况下,Chrome和IE对默认的区域设置格式有不同的看法。

如果你有任何代码依赖于:在toLocaleTimeString()中的位置,那么它必须被重构为更可靠的东西。

在某些语言环境/设置中,toLocaleTimeString()可能根本不包含: