sub is_utf8 { utf8::upgrade( $_[0] ); return 1; } #### sub is_utf8 { my $s = "\x80" . $_[0]; my $internal = unpack "p", pack "p", $s; return $s ne $internal; } #### utf8::downgrade( my $empty_dn = '' ); # 0 utf8::upgrade( my $empty_up = '' ); # 1 utf8::downgrade( my $ascii_dn = 'a' ); # 0 utf8::upgrade( my $ascii_up = 'a' ); # 1 utf8::downgrade( my $hibit_dn = chr(0xC9) ); # 0 utf8::upgrade( my $hibit_up = chr(0xC9) ); # 1 utf8::upgrade( my $wide_up = chr(0x2660) ); # 1 for ( $empty_dn, $empty_up, $ascii_dn, $ascii_up, $hibit_dn, $hibit_up, $wide_up, ) { print is_utf8($_)?1:0, "\n"; }