Strawberry Perl 5.12.3でHTTP::Message 6.02がUTF-8を受け付けない

以下のようなコードでエラーが出る。

use HTTP::Message;
my $m = HTTP::Message->new;
$m->content("\x{1f603}");
HTTP::Message content must be bytes at - line 3

Unicode文字列は渡せないそうだ。
内部で呼んでいるutf8::downgradeは、perldocによるとネイティブの8-bit encodingに変換する関数らしいので、

use locale;
use POSIX qw(LC_ALL setlocale);
setlocale(LC_ALL, 'English_United States.65001');

してみたのだが変わらず*1

一度はモジュールのバグかと思ったが、考えてみるとメッセージボディはtext/*とは限らない。ライブラリレベルでは現状のoctet sequence以外をはじくくらいでよい気がする。
そういうわけで呼び出し側で都度対処する場合はutf8::is_utf8()やutf8::encode()あたりを使ってUTF-8フラグを落とせばよい。

utf8::encode($content);
$m->content($content);

*1:locale関係はシステム依存が大きいのでportabilityに欠けるのもマイナス。