UTF-8文字の削りかす除去

no utf8の状態で、バイト単位のsubstr()を使って、末尾が不完全なUTF-8文字になってしまった際の、削りかす除去。

$data =~ s/(?:[\xC0-\xDF]|[\xE0-\xEF][\x80-\xBF]{0,1}|[\xF0-\xF7][\x80-\xBF]{0,2})$//;

こんなんで良いのかしら。

あと、2バイト文字の確認にはギリシャ文字(オメガとか)を使えばいいんだけど、4バイトって何を使えば良いのかなぁ…