var strSex=" Male";
GB2312 エンコーディングでは、ActiveX コントロールから読み取られた BSTR 値である別の変数 strAxSex があり、この時点でも元の値が " Male" であると仮定します。 JavaScript プログラムの Compare: strSex==strAxSex は false、つまり "male"!="male" です。
しかし、VS2005 のデバッグで strSex==strAxSex という式を見ると、それは真実であり、よく見ると、strSex.charCodeAt(0) と strAxSex.charCodeAt(0) も等しく、strSex です。 charCodeAt(0) は strAxSex と等しく、charCodeAt(0) は NaN とも等しくなります。
vs2005 変数値プロンプトをもう一度見てください。strSex="□□" であることがわかります。文字定数が非 Unicode であるため、strSex に割り当てられた値が「male」の Unicode 値と異なることが判明しました。 js ファイルをエンコード utf-8 で保存して再実行してみると、最終的に strSex==strAxSex が true になり、プログラムの実行はデバッガーと一致し、日常のロジックと一致します。