VBS と JScript で 2 つの小さなプログラムがあります。
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 ¡¢£¤¥¦§¨©ª«¬®
¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ
ÿ
C:>cscript /nologo JScript.js
☺☻♥♦♣
♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
^_`abcdefghijklmnopqrstuvwxyz{|}~⌂???????????????????????????????? ¡¢£¤¥¦§¨©ª«¬
®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüý
þÿ
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 の異なる文字を含む同じファイルを正しく生成する方法はありますか? ティア
アントニオ