salesoforceおよびapexで、どのように文字数・バイト数がカウントされるかについてまとめておこうと思います。
たとえば、オブジェクトの項目定義で「テキスト型で4文字」と定義されていた場合、半角、全角の混じった文字列はどこまで許容されるでしょうか。
Salesforceの中では文字列はUTF-8で扱われますので、全角は3byte、半角は1byteとなります。
バイト数を確認するコードは、「Blob.valueOf(string).size()」です。
また、全角・半角ともに、1文字は1文字として扱われます。
文字数は「string.length()」で確認できます。
つまり、下記のようなコードで確認すると、、、
String testStr = '1ああ1あ';
System.debug('length=' + testStr.length());
System.debug('byte size=' + Blob.valueOf(testStr).size());
length=5
byte size=11
のように出力されます。
項目定義で「テキスト型で4文字」と定義されていた場合、「1ああ1」までしか入力できないことになりますね。