在IE 11中,我使用ToLocaleDateString()获得了有趣的结果.返回的字符串在浏览器中看起来很好,例如"1/28/2014 11:00:46 AM",但是如果我将该值复制并粘贴到纯文本编辑器中,它看起来像这样:"?1?/? 28?/?2014?11?:?00?:?46 ?? AM".
有趣的是,如果我将文本粘贴到Microsoft产品中,它看起来很好......问题是,如果您尝试以编程方式使用该值来创建日期,则它无效.您可以通过在IE11中打开一个控制台并创建一个新日期,使用ToLocaleDateString()对它进行测试,然后尝试使用生成的字符串以javascript或您选择的语言创建一个新日期(我'我在这里使用ASP.NET ...).
我做错了什么,或者是否有其他方式我应该与javascript日期进行交互?我怎样才能摆脱那些时髦的符号?
编辑: 感谢下面的评论,我能够弄清楚未显示的字符是什么,它们是从左到右的标记.根据编辑器我将值粘贴到编辑器设置使用的编码和编码,文本将以不同的方式显示:有时带"?",有时没有.
所以我正在编写一个小帮手方法,将数字转换为有效的货币格式($xx,xxx.xx).toLocaleString().在Chrome中使用它时,一切都按预期工作,但在Node.js中使用时似乎完全坏了.
例:
var n = 6000
console.log( n.toLocaleString('USD', {
style: 'currency',
currency: "USD",
minimumFractionDigits : 2,
maximumFractionDigits : 2
}) );
Run Code Online (Sandbox Code Playgroud)
如果您在浏览器中运行它,它会打印出来$6,000.00.如果您在Node.js REPL或应用程序中运行此代码段,它将返回6000为String.
猜猜这是Node.js的一个错误?你可以在这附近做一些工作吗?