• 締切済み

Javaでフォームの入力時に絵文字をはじきたい

Javaで入力フォームを作成しているのですが、 開発はUTF-8で行い、DBがEUCのため、iPhoneの絵文字を入力されると PSQLExceptionになってしまいます。 org.postgresql.util.PSQLException: ERROR: character 0xee9095 of encoding "UTF8" has no equivalent in "EUC_JP" アプリ側で絵文字があったらエラーを返すか、 DBに登録できるようにエスケープするかしたいのですが、 どのように実装すればよいでしょうか?

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

たとえば○付き数字などの文字もUTF-8にあってEUC-JPには含まれませんが、対策したいのはiPhoneの絵文字だけですか? もし○付き数字をはじくような処理を既に実装してあるならばそれと同じようなことを絵文字に対しても行えばいいと思います。 EUC-JPにマップできない文字があったらとにかくエラーにしたい場合は、CharsetEncoderを使えば検出できます。 import java.nio.*; import java.nio.charset.*; static boolean mappableToEUCJP(String s) { try { CharsetEncoder encoder = Charset.forName("EUC-JP").newEncoder(); encoder.encode(CharBuffer.wrap(s)); } catch (CharacterCodingException e) { return false; // EUC-JPに変換できない文字があった } return true; }

関連するQ&A

専門家に質問してみよう