サイズ= 8のページの入力フィールドがあります。DBの列の制限を超えないように入力のサイズを確認する方法
DBでは、対応する列はVARCHAR2(8)です。
しかし、フィールドに特殊なascii文字で長さ8の文字列を入力すると、次の例外が発生します。
ORA-12899:列xxxxのためにあまりにも大きな値(:10、最大:実際8)
私はバリデータでこれをキャッチしようとしているが、私は(myString.getBytesを確認してください)もの長さ。 8.
DB側では、列をVARCHAR2(8 CHAR)に変更するという解決策があります。
コントローラーでこれを確認できる別の解決策がありますか?
「特殊なASCII文字は」意味がない - あなたはマルチバイト/ Unicode文字、または少なくとも非ASCII文字を意味し、右? ASCII文字は常に1バイトです。 –
はい。私はマルチバイト/ユニコード文字を意味します。 実際には、漢字を入力します。 –
文字のバイト長は(少なくとも時々)文字セットに依存すると私は考えます。したがって、DBから少なくとも**何か**を知らなくてもこのチェックをすることはできません。つまり、DBキャラクタセットです。 'myString.getBytes()。length'が返すと思われるものが何であるかわかりません - 文字セットを引数として取ることなく、どのように知ることができますか?デフォルトの文字セット(おそらくOSの文字セット?) – mathguy