文字列数え<=>バイト変換

セールスフォースのみ開発だけなら楽ですが マスタ、トランザクションデータを外部基幹システムと連携する場合 セールスフォースの方はUTF-8しか対応しないし基本的に文字列をカウント オブジェクト(テーブル)に格納しますが 一般的に外部システムの場合殆どリレーションデータベース<Oracle、Postgre、MySQLなど>を使っていますので文字列<=>バイトを突き合わせる必要があります。 その場合セールスフォースに持っている文字列に対しバイトに変換する必要があります。 下記のコードスクリプトを参考、実装できると思います。

String str = 'あいaiAE';

// 文字列のbyte数カウント
Integer blen = 0;
for (Integer i = 0; i < str.length(); i++) {
    String c = str.substring(i, i + 1);
    if (Blob.valueOf(c).size() > 1) {
        blen += 2;
    } else {
        blen += 1;
    }
}

System.debug('UTF8でバイト数カウント=' + Blob.valueOf(str).size());
System.debug('SJISでバイト数カウント=' + blen);

Happy Coding

Posted in Apex, Java, Salesforce, Vietnam Offshore on Apr 06, 2022