<?php
var_dump(strlen(iconv('utf-8', 'utf-16le', 'A B C')) / 2); # correct
var_dump(strlen(iconv('utf-8', 'utf-16le', '🎖')) / 2); # correct
var_dump(strlen(mb_convert_encoding('A B C', 'UTF-32BE', 'UTF-8')) / 2); # off by 5 chars
var_dump(strlen(mb_convert_encoding('🎖', 'UTF-32BE', 'UTF-8')) / 2); # correct
var_dump(mb_strlen(mb_convert_encoding('🎖', 'UTF-32BE', 'UTF-8'), 'UTF-32BE')); # must say 2
var_dump(mb_strlen(mb_convert_encoding('A B C', 'UTF-32BE', 'UTF-8'), 'UTF-32BE')); # correct
preferences:
61.29 ms | 402 KiB | 5 Q