- ベストアンサー
文字コードチェックについて
文字コードのチェックについて質問です。 検索した所、下記の質問で同じような質問がでていたので参考に作ってみたのですが java.lang.ArrayIndexOutOfBoundsException になってしまい動作しません。 charに変換するときに2byte使う条件が違っているのだと思うのですがよくわかりませんでした。 http://okwave.jp/qa1754723.html ↑参考にした質問 入力された文字に対象となる文字コードが含まれているかをUnicodeではなくてSJISのコードで調べたいのですがどうすればよいか教えてくれませんか? うまく動作しなかったのは下記のコードです。 引数で与えられた文字列にSJISの8740~879c、ed40~effc、fa40~fc4b(機種依存文字と外字) が含まれていたらエラーにするようなメソッドです。 --- private boolean checkChar(String target) { byte charArray[] = charArray = target.getBytes("MS932"); for (int i = 0; i < charArray.length; i++) { byte charByte = charArray[i]; char targetChar; if (charByte >= 128) { targetChar = (char) charByte; } else { targetChar = (char) (charByte * 0x100 + charArray[i + 1]); i++; } if (0x8740 <= targetChar && targetChar <= 0x879c) { // エラー処理 return false; } if (0xed40 <= targetChar && targetChar <= 0xeffc) { // エラー処理 return false; } if(0xfa40 <= targetChar && targetChar <= 0xec4b) { // エラー処理 return false; } } return true; } ---
- みんなの回答 (3)
- 専門家の回答
お礼
if((0xFA40 <= targetChar) && ((targetChar <= 0xEC4B)) { を if((0xFA40 <= targetChar) && (targetChar <= 0xfC4B)) { にして、少しの手直しでやりたかった処理になりました。 ありがとうございました。 機種依存文字にも種類がたくさんあることを知りました。 外字とは違うのですね。 現在はWINDOWSでの入力が前提だったためにマックなどは対象にしていませんが今後はわからないので確かに考慮しなければならないと思います。 文字コードは奥が深そうなので、今後もっと勉強しないといけないと思いました。 本当にありがとうございました。