salesoforceおよびapexでの文字数・バイト数のカウントについて

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」までしか入力できないことになりますね。