- PR -

Windows Vistaの4バイト文字をチェックするJavaScript

1
投稿者投稿内容
shuichi
会議室デビュー日: 2007/01/28
投稿数: 2
投稿日時: 2007-01-28 02:22
Windows Vistaは、Windows XPまでのOSでは使用できなかったJIS第3、4水準の2バイト文字や4バイト文字が使用できるようになりました。
Windows Vistaでその2バイト文字や4バイト文字をJavaのWebアプリに入力し表示をすると、文字コードがEUCやSJISの場合「𘚟」のような10進数に文字化けしてしまいます。
そこで画面で更新ボタンをクリックしたときにJavaScriptでチェックし、アラートを出して利用者に削除してもらうか、近い文字に置換する方法で対処したいと考えていますが、JavaScriptのソースが公開されているサイトや実装方法を教えてください。

nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-01-28 11:37
そもそもHTMLの文字コードをUTF-8とかにすればいい話ではないのでしょうか。
shuichi
会議室デビュー日: 2007/01/28
投稿数: 2
投稿日時: 2007-01-30 00:13
早速の返信ありがとうございます。
DBの文字コードがEUCになっており、JSPの文字コードもEUCになっているので、文字コードはEUCのままにしようと思います。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-01-30 11:42
とりあえず、私が確認した限りではJavaScriptのエンジン自体は
Unicodeで動作しているようなのでString.charCodeAt(index)で
文字コードを取得するとShift_JISで書かれたHTMLだろうと
文字コードはUnicodeのものが取得されます。

EUC_JP ⊂ Unicode だったと思いますのでEUC_JPの文字コードの一覧を
作成して個別の文字をチェックすれば実現はできることになりますね。
現実的には遅くて使い物にならないと思いますが。

そもそも、Shift_JISで書かれたページだろうとEUC_JPで書かれたページだろうと
inputタグの入力欄にはハングルなどの文字を書くことができるわけで、
不明文字の入力なんてVistaになって初めて出てきた問題ではない。
XPでも入力欄にハングルなど文字セット外の文字を入れれたわけです。

それに対してなんらの対応もしていなくて問題なかったのにUnicode4.0の
拡張文字が出て初めて対応を入れるというのもよくわかりませんが、
いずれにせよ、クライアントサイドでの入力チェックは厳しいのかもしれませんね。

HTMLからDBまで全部Unicodeにしてしまうのが一番無難だと思いますが
既存システムの改修となると難しいですかね。
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2007-01-31 11:40
nagiseさんの言われるように、JavaScriptでチェックするのは現実的ではないのですが、
どうしてもやりたいのであれば、
http://wakaba-web.hp.infoseek.co.jp/table/jis-note.ja.html
こちらに、EUCとUnicodeのマッピングが記載されています。
これを使って、JIS X 0208 に含まれない文字を検出してエラーを出すことになります。
あまりに非現実的なので誰もしていないと思います。自分で作るしかないでしょう。
つばさ
ベテラン
会議室デビュー日: 2005/02/05
投稿数: 54
投稿日時: 2007-01-31 20:54
「javascript 漢字」で検索したら、以下のURLがヒットしました。
http://www.losttechnology.jp/JavaScript/kanjichecker.html
参考まで。
hoge
会議室デビュー日: 2007/02/08
投稿数: 1
お住まい・勤務地: 東京
投稿日時: 2007-02-08 14:43
私もVistaでは機種依存文字の入力が比較的簡単になった為、
クライアントサイドでの特殊文字チェックの実装を検討しています。
私の所ではクライアントがWindowsオンリーの為、VBScriptが使える為
「SJISに変換出来なかったら」エラーみたいなロジックをhtmlに埋め込む
事でなんとかなりそうです。。。
(どっちにせよ不本意な実装方式ですが・・)
こんなサイトを見つけました、参考にどうぞ。
http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html
1

スキルアップ/キャリアアップ(JOB@IT)