• 締切済み

バイナリを扱う

str = "aあ" ar = new Array() ここを教えてください。 if(ar[0] == 97 ar[1] == 130 && ar[2] = 160) alert("ok")

みんなの回答

  • 665
  • ベストアンサー率72% (18/25)
回答No.2

NetscapeやiCabならescape関数を利用してできます(Shift_JISで保存する必要あり)。 var str = "aあ"; var ar = escape(str).match(/%..|./gi) || new Array(); for (var i = 0; i < ar.length; i++) { ar[i] = Number("0x" + ar[i].substr(1, 2)) || ar[i].charCodeAt(0); } if (ar[0] == 97 && ar[1] == 130 && ar[2] == 160) { alert("OK"); } もしIEなど他のブラウザで同じことをしようと思えばShift_JISのマップでも作らないと無理でしょうね。 参考サイトで公開されているライブラリを利用するといいように思います。 EscapeSJIS関数を改造するか、上記のescape(str)をEscapeSJIS(str)に書き換えると目的の効果が得られるかと思われます。

参考URL:
http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ちょっと意味がよくわからないので、 質問の意味や意図を補足していただけますか? 文字列をシフトJISコードとして1バイトずつ扱い、そのコードを表す数値と比較するというような意味だとしたら、 昔のブラウザ(ネスケのjavascript1.2以前)なら別ですが、 現在のブラウザでは、文字コードはUNICODE(ユニコード)で扱うようになっていますので文字コードをシフトJISとして扱うことはできません。

関連するQ&A

専門家に質問してみよう