sub encode_utf8 { my $e; for (map ord, split //, $_[0]) { if ($_ < 128) { $e .= chr($_); } elsif ($_ < 1024) { $e .= chr(0xC0 + ($_ >> 6)); $e .= chr(0x80 + ($_ & 63)); } elsif (...) ... } } return $e; }