vbscript – 为什么WScript.StdOut.Write方法在VBS和JScript中的
我在VBS和JScript中有两个小程序:
VBScript.vbs: For i=0 To 255 WScript.StdOut.Write Chr(i) Next JScript.js: for ( var i=0; i <= 255; ++i ) WScript.StdOut.Write(String.fromCharCode(i)); 当我在命令提示符中执行它们时,它们显示不同的结果: C:>cscript /nologo VBScript.vbs ????? ???????§??↑↓→←∟?▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[] ^_`abcdefghijklmnopqrstuvwxyz{|}~???'?".┼╬^%S<O?Z??''""--~Ts>o?zY ?¢£¤¥|§¨?a??-? ˉ°±23′μ?·?1o?????àá??????èéê?ìí??D?òó???×?ùú?üYT?àáa?????èéê?ìí??e?òó???÷?ùú?üyt ? C:>cscript /nologo JScript.js ????? ???????§??↑↓→←∟?▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[] ^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????? ?¢£¤¥|§¨?a??- ?ˉ°±23′μ?·?1o?????àá??????èéê?ìí??D?òó???×?ùú?üYT?àáa?????èéê?ìí??e?òó???÷?ùú?üy t? 可以解释之前的输出,因为JScript的fromCharCode方法与VBScript的Chr函数之间存在一些操作差异.但是,如果尝试将输出重定向到磁盘文件,结果会有很大不同: C:>cscript /nologo VBScript.vbs > VBScript.txt C:>cscript /nologo JScript.js > JScript.txt C:JScript.js(2,4) Microsoft JScript runtime error: Invalid procedure call or argument C:>dir *.txt 15/01/2013 05:48 p.m. 128 JScript.txt 15/01/2013 05:48 p.m. 256 VBScript.txt 在这种情况下,两个程序在相同的条件下使用相同的WSH方法,所以我不明白为什么VBS正确生成256个字符的文件,但JScript发出错误并只生成前128个字符. 这里发生了什么?有没有办法在JScript中正确生成具有256个不同字符的相同文件? TIA 安东尼奥
第一, 你的代码的逻辑是不一样的. VBScript.vbs的计数从ZERO(0)开始,而JScript.js从ONE(1)开始. 更改JScript中的增量运算符以使它们相同: for ( var i=0; i <= 255; i++ ) WScript.StdOut.Write(String.fromCharCode(i)); 第二, 你使用的功能是不一样的 Chr()函数返回ASCII字符, 而fromCharCode()函数返回的Unicode字符可能每个字符有1到4个字节. 因此,ASCII集中的?字符与Unicode集中的?字符不同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ms-project – 如何强制Microsoft Project中的任务根据优先
- windows-server-2008 – Windows Server 2008 R2,重新安装而
- windows-server-2008 – Windows服务器需要多久重启一次?
- WIN2000?SERVER安全配置服务器手册?(5)
- windows – 用于目录大小计算的免费工具/脚本
- windows编译和使用tesseract(C++ api)
- 如何检查Windows 7kl上的OpenGL版本
- DirectX11--HR宏关于dxerr库的替代方案
- Microsoft是否提供连接到其自己的MS CryptoAPI的PKCS#11提供
- Windows – 在Workstation上重新安装ADCS CA证书和CRL