• ベストアンサー

JavascriptでのSJIS判定

標題の用に、UTF-8で保存されている、htmlから フォームのテキストエリアにSJISの文字以外の文字列が入力された場合、 アラートをあげるような動きを実装させたく困っております。 charCodeAtでUnicodeを取得し、sjisコードと比較すれば良いと思い調べたのですが、 参考になるページを見つける事ができませんでした。 また、IE9以降とFirefoxの両方で動作すればと考えております。 どうぞ、ご教授よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

一般的に言われるShiftJISはMicrosoft Codepage 932 (CP932/MS932)のことを指すことが多いため その前提で話をすると、 以下のページにCP932の一覧表があり対応するUnicodeのコードポイントも記載してあります。 Windows Codepage 932 http://msdn.microsoft.com/ja-JP/goglobal/cc305152.aspx (複数ページから構成されていることに注意) そのため、上記ページからCP932に対応するUnicodeコードポイントの一覧を作り charCodeAtの値と比較することでCP932の範囲内の文字であるかどうかが判別できると思います。 (一覧を作るのが面倒なので すでに同じことをやった人がいないか調べたことがあるのですが、 探し方が悪かったのか私が調べたときは見つけられませんでした。)

RYO-88
質問者

お礼

Gotthold様 ありがとうございました。 やはり、どこかで拾う事はできなさそうですね。 早速、教えて頂いたページを元に作成してみました。 マイクロソフトのページなのですが間違いはないかと思うのですが、表の下の一覧からリストを作成した所、なぜか結構重複が・・・。 作成時のミスかもしれませんが、もう少し調査が必要そうでした。 この度は、本当にありがとうございました。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

#1の方がいわれているようにshift-jisの各文字に対応するunicodeのコードポイントの一覧を付くっておいて、その中に含まれるかどうかで判断する事になると思いますが、そのJavaScriptはshift-jisで扱える約11,000文字分のデータを持つ事になります。それだけ大きなデータを持つJavaScriptをブラウザで処理させるのかどうかは検討された方がよいと思います。

RYO-88
質問者

お礼

wormhole様 ありがとうございました。 確かにブラウザで処理させる数ではない気がします。 まだ、重複問題でunicodeの一覧ができていないので何とも言えませんが、うまく判定処理を考えれば全部なめなくても良さそうですので、取り敢えず実装してみる事に致します。 この度は、本当にありがとうございました。

関連するQ&A