In Perl ist das ganz einfach: Wenn Du _nicht_ dekodierst, hast Du Bytes. Wenn Du dekodierst, hast Du einen String.
nicht String, sondern das UTF8 Flag gesetzt.
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use Encode ();
my $cgi = CGI->new;
my $utf8Parm = $cgi->param('utf8Parm'); # utf-8 kodiert übergeben: '€urö'
print 'Content-type: text/plain', "\n\n";
print 'LEN:', length($utf8Parm), "\n"; # 7
print 'STRINGLEN:', length(Encode::decode('UTF-8', $utf8Parm)), "\n"; # 4
Sorry, irgendwo hapert's bei mir noch.
Unter der Voraussetzung, dass du unter _encode_ auch "<:utf8" verstehst, hast du insofern Recht, als für die Variable das UTF8 Flag gesetzt wird, welches das Verhalten von Funktionen und Operatoren steuert.
mfg Beat
--
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o
Der Valigator leibt diese Fische