|
|
 |
 |
マークは、次期バージョンにて対応予定です。 |
 |
マークは、スケジュールは未定ですが今後対応する予定です。
(無印)は、既にリリース済み製品で対応されたものまたは、回答(A.〜)により解決やクローズされた項目です。
|
【件 名】
InputChecker#setConvert()について 【日 付】 (2002/08/01) 【Q番号】[0207032] 【製 品 名】 cInputCheck(Ver.
1.2.3)
InputChecker#setConvert()の機能は次のように記載されていますが, 「SJIS,EUCJIS,JIS からMS932 への文字コード変換フラグを設定」
EUCで入力してもMS932に変換されないようです。 同様の現象がおきていないでしょうか?
setConvert(true)は、cInputCheckへ渡されるチェック項目の”値”が、JIS系(Shift_JIS, EUC-JP, JIS)から 変換された結果である場合に指定するオプションです。 正確にいうと、byte[]などからMS932以外のJIS系のコンバータを使用してjava.lang.Stringを作成した場合となります。 パラメータなどをEUC-->MS932へ変換するオプションではありません。
cInputCheckへ渡すチェック項目の値は、もともとの文字コードからUnicodeへ変換された結果の java.lang.Stringである必要があります。cFramework + アプリケーションサーバ + cInputCheckの場合、 WEBパラメータを検査する場合はcFrameworkの設定で行います。 また、Javaアプリケーション + cInputCheckの場合、cInputCheckへ渡すチェック項目の値が 適切な変換の結果であることは、アプリケーションが保証する必要があります。
cInputCheckはMS932コードから変換した結果のString(Unicode)を基に各種チェックを行っています。
ここで問題になるのは、Shift_JIS, EUC-JP, ISO2022-JP <--> Unicodeと MS932 <--> Unicodeのマッピングが異なる場合があるということです。
具体的にいえば、全角ハイフン"−"はSHIFT_JIS, MS932共に"0x817c"という文字コードですが、 SHIFT_JISであるとしてUnicodeへ変換すると(SHIFT_JISコンバータを使用してjava.lang.Stringを作成すると) \u2212(MINUS_SIGN)というUnicodeの文字コードに変換されます。 これは、ほかのJIS系のコード(EUC-JP, JIS)の場合も同様です。 しかし、MS932であるとしてUnicodeへ変換すると、\uff0d(FULLWIDTH_HYPHEN-MINUS)へ変換されます。
cInputCheckは、前述したとおり、この場合全角ハイフンをMS932から変換された結果の\uff0d(FULLWIDTH_HYPHEN-MINUS) で識別しており、渡されたStringがJIS系のコードから変換されたものである場合、全角ハイフンであることを識別できません。
|