Copy the fix to action(), match coding style

On a related note, `my $text = "@_"` could cause the same bug in a
slightly different place. This is currently not a problem, since say()
is never called with more than 2 args. But if it ever becomes a problem,
this could be replaced by adding:

    for ( @_ ) { utf8::encode( $_ ) if utf8::is_utf8( $_ ); }

as the *very first* line inside say() and action(). Rather ugly though.