よく半角記号・半角文字などと言うが、
文字コードによってある文字が1バイト文字かマルチバイト文字かが変わるので、仕様を「半角記号は入力可」のように決めると後でトラブルの元になる。
例えば、「\」はShiftJISでは1バイトだが、UTF8では2バイト。
半角カナはShiftJISでは1バイトだが、UTF8では3バイト。
特に「\」は、iOSはShiftJISを扱えないのでShiftJISの「\」のコードを送信できないというトラブルになることがある。
バリデーション条件を決める場合は文字種単位で決めること。
特に記号は文字単位で指定すべき。